Week05_정보보안 일반

Week 05 · 4과목 정보보안 일반

Day 1 · 접근통제 (★ 매회 출제)

1-1. 접근통제란 무엇인가

접근통제(Access Control) 는 "누가(주체) 무엇에(객체) 어떤 행동(접근 권한)을 할 수 있는가"를 정하고 강제하는 일입니다.

비유하면 회사 건물입니다. 사원증을 찍는 사람 = 주체, 문이 열리는 회의실 = 객체, "이 사원증은 3층 회의실만 열린다" = 접근 권한입니다. 같은 프로세스라도 어떤 때는 주체(파일을 읽을 때), 어떤 때는 객체(다른 프로세스가 종료시킬 때)가 될 수 있다는 점이 시험에 가끔 나옵니다.

1-2. 접근통제 절차 (식별 → 인증 → 인가 → 책임추적)

flowchart LR
    A["식별
Identification
나는 누구다"] --> B["인증
Authentication
그걸 증명"] B --> C["인가
Authorization
권한 부여"] C --> D["책임추적성
Accountability
로그·감사"]
단계 질문 예시 비고
식별 너는 누구라고 주장하나? 아이디 입력, 사원증 번호 유일해야 하고 공유 금지
인증 정말 그 사람인가? 패스워드, OTP, 지문 주장을 검증
인가 무엇을 해도 되나? 읽기만 허용 인증 후에 이뤄짐
책임추적성 누가 언제 무엇을 했나? 감사 로그 식별이 유일해야 가능

1-3. 접근통제의 3요소 (정책 · 메커니즘 · 모델)

요소 의미 예
접근통제 정책 "무엇을 허용할지" 정하는 규칙/방침 DAC, MAC, RBAC
접근통제 메커니즘 정책을 실제 구현하는 기술 수단 ACL, Capability List, 보안 레이블, 접근통제 행렬
접근통제 (보안) 모델 정책을 수학적·형식적으로 표현하고 안전성을 증명 BLP, Biba, 클락-윌슨, 만리장성

1-4. 접근통제 정책: DAC · MAC · RBAC (+ABAC)

① DAC (Discretionary, 임의적 접근통제)

② MAC (Mandatory, 강제적 접근통제)

③ RBAC (Role-Based, 역할 기반 접근통제)

flowchart LR
    U1[김대리] --> R1[회계 담당]
    U2[이과장] --> R2[회계 승인자]
    U3[박사원] --> R1
    R1 --> P1[전표 작성]
    R1 --> P2[전표 조회]
    R2 --> P2
    R2 --> P3[전표 승인]

④ ABAC (Attribute-Based, 속성 기반)

구분 DAC MAC RBAC
권한 결정자 객체 소유자 시스템(관리자) 중앙 관리자
결정 기준 신분(ID)·그룹 보안 레이블(등급) 역할(직무)
유연성 높음 낮음 중간
정보흐름 통제 불가 가능 제한적
대표 구현 ACL, Unix rwx 보안 레이블, SELinux 역할-권한 매핑
적합 환경 일반 상용 군사·정부 인사이동 잦은 기업
약점 트로이목마, 권한 남용 경직, 관리 부담 역할 폭증(Role explosion)

1-5. 접근통제 행렬 → ACL / Capability List

접근통제 행렬(Access Control Matrix) 은 행=주체, 열=객체, 칸=권한인 표입니다. 개념적으로는 완벽하지만 대부분 칸이 비어 있어(희소 행렬) 그대로 저장하면 낭비가 큽니다. 그래서 둘 중 한 방향으로 잘라서 저장합니다.

✏️ 연습: 행렬을 ACL과 CL로 바꾸기

주체 \ 객체 급여.xlsx 공지.txt 백업.sh
Alice r, w r x
Bob – r, w –
Carol r r r, x

풀이 1 — ACL (열 단위, 객체 기준)

급여.xlsx : Alice(r,w) → Carol(r)
공지.txt  : Alice(r) → Bob(r,w) → Carol(r)
백업.sh   : Alice(x) → Carol(r,x)

풀이 2 — Capability List (행 단위, 주체 기준)

Alice : 급여.xlsx(r,w), 공지.txt(r), 백업.sh(x)
Bob   : 공지.txt(r,w)
Carol : 급여.xlsx(r), 공지.txt(r), 백업.sh(r,x)
질문 유리한 방식 이유
"급여.xlsx에 접근 가능한 사람 전부는?" ACL 객체 하나만 보면 됨
"Bob이 가진 권한 전부는?" Capability 주체 하나만 보면 됨
"Carol 퇴사, 모든 권한 회수" Capability 주체의 리스트만 삭제 (ACL이면 모든 객체를 뒤져야 함)
"파일 삭제 시 권한 정리" ACL 객체와 함께 ACL도 사라짐
분산 환경에서 위임 Capability 티켓을 넘기면 됨(Kerberos 티켓과 유사)

1-6. 보안 레이블과 지배(Dominance) 관계

MAC과 BLP/Biba를 풀려면 "어느 레이블이 더 높은가" 를 판단할 줄 알아야 합니다.

L1 L2 관계
(S, {핵, 외교}) (C, {핵}) L1 ≥ L2 (등급 높고, 범주 포함)
(S, {핵}) (C, {외교}) 비교 불가 (범주가 포함 관계 아님)
(C, {핵, 외교}) (S, {핵}) 비교 불가 (등급은 낮은데 범주는 넓음)
(TS, { }) (U, {핵}) 비교 불가 (TS여도 '핵' 범주 없음)

이렇게 레이블들이 "지배" 관계로 이루는 구조가 수학의 격자(Lattice) 이고, 이것을 이용한 모델이 래티스(격자) 모델(Denning)입니다. 두 레이블의 최소 상한(LUB) = 둘을 모두 지배하는 가장 낮은 레이블, 최대 하한(GLB) = 둘 모두에게 지배되는 가장 높은 레이블.

1-7. 벨-라파둘라(BLP) 모델 — 기밀성

1973년 미 국방부용으로 만들어진 최초의 수학적 보안 모델. 목표는 오직 기밀성: "비밀이 낮은 곳으로 새지 않게".

규칙 내용 별명
단순 보안 속성 (Simple Security, ss-property) 주체는 자기보다 높은 객체를 읽을 수 없다 No Read Up
스타(*) 보안 속성 (*-property) 주체는 자기보다 낮은 객체에 쓸 수 없다 No Write Down
강한 스타 속성 (Strong *) 읽기·쓰기는 같은 등급에서만 –
임의적 보안 속성 (ds-property) 위 규칙 외에 접근통제 행렬(DAC)도 만족 –

왜 "No Write Down"이 필요할까? 비밀 등급 장교가 비밀 문서를 읽고, 그 내용을 평문 게시판에 써버리면 비밀이 샙니다. 트로이목마가 몰래 그런 짓을 하는 것도 이 규칙이 막습니다. 반대로 "위로 쓰기(Write Up)"는 허용 — 이등병이 장군에게 보고서를 올리는 건 기밀성에 문제가 없습니다(다만 무결성은 깨질 수 있음 → 그래서 Biba가 나옴).

       BLP (기밀성)               주체 = 2급비밀(S)
  ┌──────────────┐
  │ 1급비밀 (TS) │  ← 읽기 ✗ (No Read Up)    쓰기 ○ (Write Up 허용)
  ├──────────────┤
  │ 2급비밀 (S)  │  ← 읽기 ○                 쓰기 ○
  ├──────────────┤
  │ 3급비밀 (C)  │  ← 읽기 ○ (Read Down)     쓰기 ✗ (No Write Down)
  ├──────────────┤
  │ 평문 (U)     │  ← 읽기 ○                 쓰기 ✗
  └──────────────┘

1-8. 비바(Biba) 모델 — 무결성

1977년. BLP를 뒤집은 무결성 모델. 걱정거리가 "새는 것"이 아니라 "오염되는 것"입니다.

규칙 내용 별명
단순 무결성 속성 자기보다 낮은 무결성 객체를 읽지 않는다 (오염된 정보 흡수 금지) No Read Down
스타(*) 무결성 속성 자기보다 높은 무결성 객체에 쓰지 않는다 (윗 데이터 오염 금지) No Write Up
호출 속성 (Invocation) 자기보다 높은 무결성의 주체를 호출(요청)하지 않는다 –
       Biba (무결성)              주체 = 중(Medium)
  ┌──────────────┐
  │ 높음 (High)  │  ← 읽기 ○ (Read Up)       쓰기 ✗ (No Write Up)
  ├──────────────┤
  │ 중간 (Med)   │  ← 읽기 ○                 쓰기 ○
  ├──────────────┤
  │ 낮음 (Low)   │  ← 읽기 ✗ (No Read Down)  쓰기 ○ (Write Down)
  └──────────────┘

비유: 신문사 편집장(높은 무결성)은 출처 불명 찌라시(낮음)를 읽고 기사에 반영하지 않으며, 인턴(낮음)은 최종 기사(높음)를 직접 수정하지 못합니다.

✏️ 드릴: "읽을 수 있나? 쓸 수 있나?"

BLP (등급: TS > S > C > U)

주체 객체 읽기 쓰기 근거
S TS ✗ ○ No Read Up / Write Up 허용
S S ○ ○ 같은 등급
S C ○ ✗ Read Down 허용 / No Write Down
U S ✗ ○ No Read Up
TS U ○ ✗ No Write Down
(S,{핵,외교}) (C,{핵}) ○ ✗ 주체가 객체 지배
(S,{핵}) (C,{외교}) ✗ ✗ 비교 불가
(S,{핵}) (TS,{핵,외교}) ✗ ○ 객체가 주체 지배 → 위로 쓰기

Biba (무결성: High > Medium > Low)

주체 객체 읽기 쓰기 근거
Medium High ○ ✗ Read Up 허용 / No Write Up
Medium Low ✗ ○ No Read Down / Write Down 허용
Low High ○ ✗ 위로 쓰기 금지
High Low ✗ ○ 아래 읽기 금지

요령: BLP는 "읽기는 아래로, 쓰기는 위로", Biba는 "읽기는 위로, 쓰기는 아래로". 화살표 방향이 정확히 반대입니다.

1-9. 클락-윌슨(Clark-Wilson) 모델 — 상업용 무결성

1987년. 은행·회계처럼 "정해진 절차로만 데이터를 바꿔야 하는" 상업 환경용 무결성 모델.

용어 의미 은행 예시
CDI (Constrained Data Item) 무결성을 보호해야 할 데이터 계좌 잔액
UDI (Unconstrained Data Item) 검증 안 된 외부 입력 고객이 쓴 입금 신청서
TP (Transformation Procedure) CDI를 바꾸는 정형화된(잘 짜인) 프로그램 이체 처리 프로그램
IVP (Integrity Verification Procedure) CDI가 올바른 상태인지 검사 일일 마감 대사
flowchart LR
    U[사용자] -->|직접 접근 ✗| CDI[(CDI 계좌잔액)]
    U --> TP[TP 이체 프로그램]
    TP -->|정해진 방식으로만 변경| CDI
    UDI[UDI 입금신청서] --> TP
    IVP[IVP 마감검증] -.검사.-> CDI

1-10. 만리장성(Chinese Wall, 브루어-내쉬) 모델 — 이해충돌 방지

1989년. 컨설팅·투자은행처럼 경쟁사 정보를 동시에 다루면 안 되는 곳의 모델. 특징은 접근 이력에 따라 권한이 동적으로 바뀐다는 것.

COI-1 (은행):  [A은행] [B은행]
COI-2 (정유):  [C정유] [D정유]

컨설턴트 김씨의 행동:

  1. 처음엔 아무것이나 볼 수 있음 → A은행 자료 열람 ○
  2. 이제 같은 COI의 B은행은 ✗ (벽이 생김)
  3. 다른 COI인 C정유는 ○ → 이후 D정유는 ✗
  4. A은행 자료는 계속 ○

1-11. 기타 모델

모델 핵심 시험 키워드
HRU (해리슨-루조-울만) 접근통제 행렬 + 권한을 바꾸는 명령(생성·삭제·권한 부여/삭제). 일반적인 경우 "안전성 문제"는 결정 불가능(튜링 기계로 환원) 권한 변경, 안전성 판정 불가
Take-Grant 시스템을 방향 그래프로 표현. 권한 이동 규칙 take·grant·create·remove. 안전성을 선형 시간에 판정 가능 그래프, take/grant
래티스(격자) 모델 보안 레이블이 이루는 격자에서 정보는 아래→위(지배 방향)로만 흐름. LUB/GLB Denning, 정보 흐름
정보 흐름 모델 객체 간 정보가 허용된 방향으로만 흐르게 BLP·Biba의 기반
비간섭(Non-interference) 모델 높은 등급 사용자의 행동이 낮은 등급 사용자가 보는 결과에 아무 영향(간섭)도 주지 않아야 함 → 은닉 채널·추론 공격 대응 Goguen-Meseguer
상태 기계 모델 안전한 상태 → 안전한 전이 → 항상 안전 BLP의 기반

1-12. 접근통제 유형(통제 기능별) 보충

기능 의미 예
예방(Preventive) 사고 발생 전에 막음 방화벽, 접근통제
탐지(Detective) 발생한 사고를 발견 IDS, 감사 로그
교정(Corrective) 피해를 바로잡음 백신 치료, 패치
복구(Recovery) 정상 상태로 회복 백업 복원, DRP
억제(Deterrent) 시도 자체를 단념시킴 경고 문구, CCTV 표지
보완(Compensating) 주 통제가 불가할 때 대체 직무 분리 대신 강화된 감사

⚠️ 시험 함정 (Day 1)

📌 기출 포인트 (Day 1)

📝 확인 문제 (Day 1)

Q1. 주체 등급이 '2급비밀', 객체 등급이 '3급비밀'일 때 BLP 모델에서 허용되는 것은?
① 읽기와 쓰기 모두 허용 ② 읽기만 허용 ③ 쓰기만 허용 ④ 둘 다 불허

Q2. 다음 중 비바(Biba) 모델에 대한 설명으로 옳은 것은?
① 기밀성 보장을 위해 No Read Up 규칙을 둔다
② 낮은 무결성 객체의 정보를 읽어 오염되는 것을 막는다
③ 상업 환경의 직무 분리를 핵심으로 한다
④ 사용자의 접근 이력에 따라 권한이 동적으로 변한다

Q3. 접근통제 행렬에 대한 설명으로 틀린 것은?
① 열 단위로 저장하면 ACL이 된다
② 행 단위로 저장하면 Capability List가 된다
③ 특정 사용자의 모든 권한을 회수할 때는 ACL 방식이 유리하다
④ 행렬을 그대로 저장하면 빈 칸이 많아 비효율적이다

Q4. 인사이동이 잦은 대기업에서 직무 변경 시 권한 관리 부담을 줄이고, 직무 분리 원칙을 적용하기 쉬운 접근통제 정책은?
① DAC ② MAC ③ RBAC ④ 신분 기반 접근통제

Q5. 클락-윌슨 모델의 구성요소와 설명의 연결로 틀린 것은?
① CDI – 무결성이 보장되어야 하는 데이터
② TP – CDI를 변경하는 정형화된 절차
③ IVP – 외부에서 들어온 검증되지 않은 데이터
④ 접근 3원소 – (사용자, TP, CDI)

Q6. 다음 중 보안 모델과 특징의 연결이 옳지 않은 것은?
① HRU – 접근 권한 변경 명령을 포함, 일반적으로 안전성 판정이 결정 불가능
② Take-Grant – 방향 그래프로 권한 이동을 표현
③ 비간섭 모델 – 높은 등급의 행위가 낮은 등급에 영향을 주지 않도록 하여 은닉 채널에 대응
④ 래티스 모델 – 역할 계층과 세션을 통해 권한을 관리


Day 2 · 인증 심화 · Kerberos · 키 분배

2-1. 사용자 인증의 4(+1)가지 유형

유형 영어 예 약점
지식 기반 Something you know 패스워드, PIN, 보안 질문 추측·유출·재사용
소유 기반 Something you have OTP 토큰, 스마트카드, 보안카드, 휴대폰 분실·도난·복제
존재(생체) 기반 Something you are 지문, 홍채, 얼굴, 정맥 변경 불가, 오인식
행위 기반 Something you do 서명 패턴, 키보드 타이핑 리듬, 걸음걸이 상태에 따라 변동
(위치 기반) Somewhere you are GPS, IP 대역 위조 가능

2-2. OTP (One-Time Password)

한 번 쓰고 버리는 패스워드라 재전송(Replay) 공격에 강합니다.

방식 동기화 기준 표준 특징
시간 동기화 (TOTP) 현재 시각(보통 30초 간격) RFC 6238 서버·토큰 시계 동기화 필요
이벤트(카운터) 동기화 (HOTP) 버튼 누른 횟수 RFC 4226 카운터 어긋나면 재동기화
질의-응답 (Challenge-Response) 서버가 준 난수 – 사용자가 난수를 입력해야 해 번거로움
S/Key 해시 체인 RFC 1760 해시값을 역순으로 사용

HOTP/TOTP 원리: OTP = Truncate( HMAC(비밀키 K, 카운터 또는 ⌊현재시각/30⌋) ) 를 6자리로 자른 값. 서버도 같은 K로 같은 계산을 해서 비교합니다.

S/Key 해시 체인 원리 (램포트 방식)

비밀 시드 x
H(x) → H²(x) → H³(x) → … → H¹⁰⁰(x)  ← 서버는 이 마지막 값만 저장
1회차 로그인: H⁹⁹(x) 제출 → 서버가 H(H⁹⁹) = H¹⁰⁰ 확인 → 저장값을 H⁹⁹로 교체
2회차 로그인: H⁹⁸(x) 제출 → H(H⁹⁸) = H⁹⁹ 확인 …

엿들은 H⁹⁹로는 다음 값 H⁹⁸을 만들 수 없습니다(해시의 일방향성). 체인을 다 쓰면 새로 초기화.

2-3. 바이오 인증(생체 인증)

지표 의미 오류 유형 높으면
FRR (False Rejection Rate, 오거부율) 본인을 거부한 비율 1종 오류 사용자 불편
FAR (False Acceptance Rate, 오인식률) 타인을 수락한 비율 2종 오류 보안 사고
CER / EER (교차 오류율) FAR = FRR이 되는 지점 – 낮을수록 정확한 시스템
오류율
 │╲                         ╱  FRR (임계값 높일수록 ↑)
 │  ╲                     ╱
 │    ╲                 ╱
 │      ╲     CER     ╱
 │        ╲   ●     ╱
 │          ╲╱  ╲ ╱
 │         ╱      ╲  FAR (임계값 높일수록 ↓)
 └──────────────────────────── 판정 임계값(엄격도) →

2-4. 메시지 인증과 디바이스 인증

메시지 인증: "이 메시지가 변조되지 않았고(무결성), 주장하는 송신자가 보냈다(출처 인증)"를 확인.

방법 원리 부인방지
메시지 암호화 대칭키로 암호화 → 키를 아는 상대만 생성 가능 ✗
MAC / HMAC 공유 비밀키 + 메시지로 태그 생성 (Day 5) ✗ (양쪽이 키를 공유)
해시 + 전자서명 개인키로 서명 ○

디바이스 인증: IoT·스마트기기처럼 "사람이 아니라 기기"가 정당한지 확인.

방식 설명 강도
아이디/패스워드 기반 기기에 계정 정보 저장 낮음 (기본 패스워드 문제 — 미라이 봇넷)
MAC 주소 기반 네트워크 카드 주소로 식별 낮음 (스푸핑 쉬움)
암호 프로토콜 기반 챌린지-응답, 대칭키/공개키로 증명 중~높음
인증서 기반 기기마다 X.509 인증서·개인키 탑재 (TPM/보안칩 보관) 높음

2-5. Kerberos v5 상세 (★)

Kerberos는 MIT의 아테나 프로젝트에서 만든 대칭키 기반 인증 + SSO 프로토콜입니다(포트 88). 이름은 그리스 신화의 머리 셋 달린 개(클라이언트·서버·KDC 3자 구조). Windows Active Directory의 기본 인증.

등장 인물

용어 의미
KDC 키 분배 센터 = AS + TGS (+ 모든 사용자·서버의 비밀키 DB)
AS (Authentication Server) 처음 로그인 시 신원 확인, TGT 발급
TGS (Ticket Granting Server) TGT를 보고 서비스 티켓 발급
TGT "티켓을 발급받기 위한 티켓". TGS의 비밀키로 암호화돼 있어 사용자는 열어볼 수 없음
서비스 티켓 특정 서버용 입장권. 그 서버의 비밀키로 암호화
세션키 KDC가 만들어 나눠주는 일회용 대칭키 (K_c,tgs / K_c,v)
Authenticator(인증자) {사용자 ID, 타임스탬프}를 세션키로 암호화한 것 → 티켓을 훔쳐도 재사용 못 하게
Realm(영역) 하나의 KDC가 관리하는 관리 도메인 (예: CORP.EXAMPLE.COM)
Principal Kerberos가 인증하는 개체 이름 (user@REALM)

비유 — 놀이공원: 매표소(AS)에서 신분 확인 후 자유이용권 팔찌(TGT) 를 받고, 놀이기구마다 안내소(TGS)에 팔찌를 보여주면 개별 탑승권(서비스 티켓) 을 줍니다. 탑승권을 낼 때는 오늘 날짜가 찍힌 확인증(Authenticator) 도 같이 내야 남이 주운 표로 못 탑니다.

sequenceDiagram
    participant C as 클라이언트
    participant AS as AS (KDC)
    participant TGS as TGS (KDC)
    participant V as 서비스 서버 V
    Note over C,AS: ① 최초 1회 (로그인)
    C->>AS: 1. AS-REQ: ID_c, ID_tgs, 타임스탬프(사전인증)
    AS->>C: 2. AS-REP: {K_c,tgs}K_c + TGT={ID_c, K_c,tgs, 유효기간}K_tgs
    Note over C,TGS: ② 서비스마다 (TGT 재사용 = SSO)
    C->>TGS: 3. TGS-REQ: TGT + Authenticator{ID_c, TS}K_c,tgs + ID_v
    TGS->>C: 4. TGS-REP: {K_c,v}K_c,tgs + 티켓_v={ID_c, K_c,v}K_v
    Note over C,V: ③ 서비스 접속
    C->>V: 5. AP-REQ: 티켓_v + Authenticator{ID_c, TS}K_c,v
    V->>C: 6. AP-REP(선택, 상호인증): {TS 확인값}K_c,v

단계별 해설

  1. 사용자가 패스워드를 입력하면 클라이언트는 패스워드로부터 사용자 키 K_c를 만듭니다. 패스워드 자체는 네트워크로 가지 않습니다.
  2. AS는 세션키 K_c,tgs를 만들어 K_c로 암호화해 줍니다 → 진짜 사용자만 풀 수 있음. 함께 주는 TGT는 K_tgs로 암호화 → 사용자는 열 수 없고 그대로 TGS에 제출만 함.
  3. 클라이언트는 TGT와, 방금 얻은 K_c,tgs로 만든 Authenticator를 TGS에 보냅니다. TGS는 TGT를 열어 K_c,tgs를 꺼내고, 그 키로 Authenticator를 열어 ID 일치 + 타임스탬프가 허용 오차(기본 5분) 이내인지 확인.
  4. TGS는 서비스용 세션키 K_c,v를 만들고, 서버 V만 열 수 있는 서비스 티켓을 줍니다.
    5~6. 서버 V는 자기 키 K_v로 티켓을 열어 K_c,v를 얻고 Authenticator를 검증. 상호 인증이 필요하면 V가 응답을 돌려줍니다.
특징 내용
암호 방식 대칭키 (v5는 AES 등 다양한 알고리즘 지원, v4는 DES만)
재전송 방지 타임스탬프 + Authenticator
SSO TGT 유효기간 동안 비밀번호 재입력 없이 여러 서비스 이용
상호 인증 지원 (AP-REP)
v5 개선점 암호 알고리즘 선택, 티켓 유효기간 유연, 티켓 전달(forwardable)·위임, 영역 간(cross-realm) 인증, 사전 인증(pre-auth), ASN.1 인코딩

약점 (★ 자주 출제)

SESAME: 유럽에서 Kerberos를 확장, 공개키 암호를 함께 사용하고 권한 정보를 PAC(특권 속성 인증서)로 전달. Kerberos의 키 관리 약점 보완.

2-6. SSO · SAML · OAuth · OIDC 구분

SSO(Single Sign-On): 한 번 인증으로 여러 시스템 이용. 편리하지만 SSO 계정이 뚫리면 전부 뚫림(단일 실패 지점) → 강력한 MFA 필수.

구분 목적 형식 핵심 개념 한 줄
Kerberos 인증 + SSO 바이너리(ASN.1) 티켓 KDC, TGT 사내망(AD) SSO
SAML 2.0 인증(+속성 전달) XML IdP, SP, Assertion(어서션) 기업용 웹 SSO
OAuth 2.0 인가(권한 위임) 주로 JSON Access Token, Scope "내 사진첩 접근 권한을 앱에 위임"
OIDC 인증 JWT(ID Token) OAuth 2.0 위에 인증 계층 "구글로 로그인"
sequenceDiagram
    participant U as 사용자(브라우저)
    participant App as 클라이언트 앱
    participant AS as 인가 서버
    participant RS as 자원 서버
    U->>App: 로그인/연동 요청
    App->>U: 인가 서버로 리다이렉트
    U->>AS: 로그인 + 권한(scope) 동의
    AS->>U: 인가 코드 → 앱으로 리다이렉트
    App->>AS: 인가 코드 + 클라이언트 인증
    AS->>App: Access Token (OIDC면 ID Token 추가)
    App->>RS: Access Token으로 API 호출

2-7. AAA 서버: RADIUS · TACACS+ · Diameter

원격 접속(VPN, 무선랜, 네트워크 장비 로그인) 시 인증·인가·과금(AAA) 을 중앙에서 처리하는 서버.

항목 RADIUS TACACS+ Diameter
전송 UDP (1812 인증 / 1813 과금) TCP 49 TCP/SCTP 3868
암호화 범위 패스워드만 숨김 패킷 본문 전체 TLS/IPsec(DTLS) 사용
AAA 구조 인증+인가 결합 인증·인가·과금 분리 분리, 확장 가능
개발 IETF 표준 Cisco IETF (RADIUS 후속)
주 용도 무선랜(802.1X), ISP 네트워크 장비 관리자 명령어 통제 LTE/5G 이동통신, 대규모
기타 가장 널리 쓰임 명령어 단위 인가 가능 신뢰성·장애 복구, Peer-to-Peer

2-8. 키 분배 — 왜 어려운가

대칭키는 미리 같은 키를 나눠 가져야 합니다. 사람이 늘어나면 키 개수가 폭발합니다.

✏️ 계산: 필요한 키 개수

사용자 수 n 대칭키 n(n−1)/2 공개키 2n
10 10×9/2 = 45 20
50 50×49/2 = 1,225 100
100 100×99/2 = 4,950 200
1,000 1000×999/2 = 499,500 2,000

KDC를 쓰면 각 사용자는 KDC와 공유하는 키 1개(마스터키) 만 가지면 되므로 n개로 줄어듭니다. 실제 통신용 세션키는 필요할 때마다 KDC가 만들어 줍니다.

키 계층: 마스터키(KEK, Key Encryption Key) 로 세션키(DEK, Data Encryption Key) 를 암호화해서 전달. 세션키는 한 번 쓰고 폐기 → 유출돼도 피해가 그 세션에 한정.

대칭키 분배 방법 4가지: ① A가 B에게 직접(물리적) 전달 ② 제3자가 A·B에게 전달 ③ 기존 키로 새 키를 암호화해 전달 ④ KDC가 암호화된 채널로 전달.

2-9. Needham-Schroeder 대칭키 프로토콜

KDC 기반 키 분배의 원조(1978). Kerberos의 뿌리입니다. (Ka, Kb = 각자 KDC와 공유한 키, Ks = 새 세션키, Na/Nb = 난수 nonce)

sequenceDiagram
    participant A
    participant KDC
    participant B
    A->>KDC: 1. A, B, Na
    KDC->>A: 2. {Na, B, Ks, {Ks, A}Kb}Ka
    A->>B: 3. {Ks, A}Kb
    B->>A: 4. {Nb}Ks
    A->>B: 5. {Nb − 1}Ks

2-10. 공개키 분배 방식 4가지 (★)

공개키는 "공개"라서 비밀 유지는 필요 없지만, "이 공개키가 정말 그 사람 것인가(진위)" 가 문제입니다.

방식 설명 약점
① 공개 발표(Public Announcement) 자기 공개키를 게시판·메일 서명란에 공표 누구나 남인 척 위조 공표 가능
② 공개 디렉터리(Publicly Available Directory) 신뢰된 기관이 관리하는 공개 디렉터리에 등록 디렉터리 관리자 키가 털리면 위조, 디렉터리 변조 위험
③ 공개키 관리기관(Public-Key Authority) 필요할 때마다 기관에 실시간 요청, 기관이 서명해 응답 기관이 병목·단일 장애점(매번 온라인 접속 필요)
④ 공개키 인증서(Public-Key Certificate) CA가 서명한 인증서를 주고받고, 오프라인에서도 검증 폐지 관리 필요(CRL/OCSP) → PKI

진화 순서 그대로 외우세요: 발표 → 디렉터리 → 관리기관 → 인증서. 오늘날 표준은 ④.

2-11. 모듈러 연산 미니 입문 (DH 계산용)

a mod n = a를 n으로 나눈 나머지. 시계 계산과 같습니다(14시 = 2시, 즉 14 mod 12 = 2).

2-12. 디피-헬먼(Diffie-Hellman) 키 교환

1976년, 최초의 공개키 개념. 둘이 공개된 통로에서 값만 주고받아도 같은 비밀키를 만들 수 있습니다. 안전성은 이산대수 문제: g, p, gᵃ mod p를 알아도 a를 구하기 어렵다.

비유 — 물감 섞기: 공통 노란색(g)에 각자 비밀색을 섞어 교환 → 받은 색에 다시 자기 비밀색을 섞으면 둘 다 "노랑+빨강+파랑"이 됨. 도청자는 섞인 색만 보고 원래 비밀색을 분리할 수 없음.

sequenceDiagram
    participant A as Alice (비밀 a)
    participant B as Bob (비밀 b)
    Note over A,B: 공개: 소수 p, 생성원 g
    A->>B: A = g^a mod p
    B->>A: B = g^b mod p
    Note over A: K = B^a mod p
    Note over B: K = A^b mod p
    Note over A,B: 같은 K = g^(ab) mod p

✏️ 계산: p = 23, g = 5, a = 6, b = 15

  1. Alice 공개값 A = 5⁶ mod 23
    • 5² = 25 ≡ 2, 5⁴ ≡ 2² = 4, 5⁶ = 5⁴·5² ≡ 4 × 2 = 8 → A = 8
  2. Bob 공개값 B = 5¹⁵ mod 23
    • 5⁸ = (5⁴)² ≡ 4² = 16
    • 5¹⁵ = 5⁸ · 5⁴ · 5² · 5¹ ≡ 16 × 4 × 2 × 5 = 640
    • 640 = 23 × 27 + 19 → B = 19
  3. Alice가 계산 K = 19⁶ mod 23
    • 19 ≡ −4 (mod 23) → (−4)⁶ = 4⁶ = 4096
    • 4096 = 23 × 178 + 2 → K = 2
  4. Bob이 계산 K = 8¹⁵ mod 23
    • 8 = 2³ → 8¹⁵ = 2⁴⁵. 그런데 2¹¹ = 2048 = 23 × 89 + 1 → 2¹¹ ≡ 1
    • 45 = 11 × 4 + 1 → 2⁴⁵ ≡ 1⁴ × 2 = 2 → K = 2 ✅

도청자는 p=23, g=5, A=8, B=19만 봅니다. 숫자가 크면(2048비트 이상) 여기서 a나 b를 구하는 것은 사실상 불가능.

특징 정리

✏️ 중간자 공격 예시 (같은 p=23, g=5, Mallory 비밀 m=3)

Mallory 공개값 M = 5³ = 125 = 23×5 + 10 → M = 10

sequenceDiagram
    participant A as Alice (a=6)
    participant M as Mallory (m=3)
    participant B as Bob (b=15)
    A->>M: A = 8 (Bob에게 보냈지만 가로챔)
    M->>B: M = 10 (Alice인 척)
    B->>M: B = 19 (Alice에게 보냈지만 가로챔)
    M->>A: M = 10 (Bob인 척)
    Note over A,M: Alice: 10^6 mod 23 = 6 / Mallory: 8^3 mod 23 = 6
    Note over M,B: Bob: 10^15 mod 23 = 5 / Mallory: 19^3 mod 23 = 5

⚠️ 시험 함정 (Day 2)

📌 기출 포인트 (Day 2)

📝 확인 문제 (Day 2)

Q1. Kerberos에 대한 설명으로 옳지 않은 것은?
① KDC는 AS와 TGS로 구성된다
② TGT는 TGS의 비밀키로 암호화되어 사용자는 내용을 볼 수 없다
③ 공개키 서명을 이용하므로 부인방지 기능을 제공한다
④ 타임스탬프를 사용하므로 시스템 간 시간 동기화가 필요하다

Q2. 사용자 200명이 서로 1:1 비밀통신을 할 때 대칭키 방식과 공개키 방식에 필요한 키의 개수로 옳은 것은?
① 19,900개 / 400개 ② 20,000개 / 200개 ③ 39,800개 / 400개 ④ 19,900개 / 200개

Q3. p = 11, g = 2인 디피-헬먼 키 교환에서 A의 비밀값 a = 3, B의 비밀값 b = 4일 때 공유키는?
① 3 ② 5 ③ 9 ④ 4

Q4. OAuth 2.0과 OIDC에 대한 설명으로 옳은 것은?
① OAuth 2.0은 사용자 인증을 위한 XML 기반 표준이다
② OIDC는 OAuth 2.0 위에 인증 계층을 추가하고 ID Token(JWT)을 발급한다
③ SAML은 JSON 기반 토큰을 사용하는 권한 위임 프로토콜이다
④ OAuth 2.0에서는 암시적(Implicit) 그랜트 사용이 가장 권장된다

Q5. 바이오 인증 시스템의 성능 지표에 대한 설명으로 옳은 것은?
① FRR은 등록되지 않은 타인을 본인으로 잘못 수락하는 비율이다
② 보안이 매우 중요한 시설에서는 FAR을 낮추는 방향으로 임계값을 설정한다
③ CER이 높을수록 정확한 시스템이다
④ 임계값을 엄격하게 하면 FAR과 FRR이 모두 감소한다

Q6. 공개키 분배 방식 중 "사용자가 필요할 때마다 신뢰기관에 접속해 상대의 공개키를 받아오는 방식"의 단점으로 가장 적절한 것은?
① 누구나 타인을 사칭해 공개키를 게시할 수 있다
② 기관이 병목 지점이 되고 항상 온라인이어야 한다
③ 인증서 폐지 목록을 관리해야 한다
④ 키 교환 과정에서 중간자 공격을 원천적으로 막을 수 없다


Day 3 · 대칭키 암호 심화

3-1. 암호 설계의 기본 원리

고전 기법 원리 예
치환(Substitution) 글자를 다른 글자로 바꿈 카이사르, 비즈네르, 플레이페어
전치(Transposition) 글자의 위치(순서)를 바꿈 스키테일, 레일펜스

3-2. 블록 암호 vs 스트림 암호

구분 블록 암호 스트림 암호
처리 단위 고정 길이 블록(64/128비트) 비트·바이트 단위
원리 라운드 함수 반복(치환+전치) 키스트림 ⊕ 평문
속도/구현 소프트웨어에 유리 하드웨어에 유리, 빠름
오류 전파 모드에 따라 다름 대체로 없음(해당 비트만)
대표 DES, AES, SEED, ARIA, LEA RC4, A5/1, ChaCha20, LFSR 기반
주 용도 일반 데이터 실시간 통신, 무선, 음성

3-3. Feistel 구조 vs SPN 구조 (★)

Feistel 구조: 블록을 왼쪽(L)·오른쪽(R) 절반으로 나눕니다. 각 라운드에서 오른쪽 절반을 라운드 함수 F에 넣고, 그 결과를 왼쪽 절반에 XOR한 뒤 좌우를 교환합니다.

   L(i-1)              R(i-1)
     │                   │
     │        ┌──────────┤
     │        ▼          │
     │   ┌─────────┐     │
     │   │ F(·,Ki) │◄─ 라운드키 Ki
     │   └────┬────┘     │
     ▼        │          │
    (⊕)◄──────┘          │
     │                   │
     └──────╲   ╱────────┘
             ╳     (좌우 교환)
     ┌──────╱   ╲────────┐
     ▼                   ▼
    L(i) = R(i-1)      R(i) = L(i-1) ⊕ F(R(i-1), Ki)

SPN 구조(Substitution-Permutation Network): 블록 전체에 매 라운드 ① 라운드키 XOR → ② S-box 치환(혼돈) → ③ P-box 순열/선형 변환(확산) 을 적용.

 평문 블록 ──► [⊕ K0] ──► [S][S][S][S] ──► [  순열/확산  ] ──► [⊕ K1] ──► … ──► 암호문
                          (치환: 혼돈)       (선형: 확산)
항목 Feistel SPN
라운드마다 변환 절반 전체
라운드 함수 역함수 불필요 필요
암·복호화 구조 동일(키 순서만 역순) 다름(역연산 필요)
라운드 수 많음(DES 16) 적음(AES-128 10)
병렬성 낮음 높음
예 DES, SEED, Blowfish, Camellia AES, ARIA, PRESENT

기타 구조: Lai-Massey(IDEA: XOR, mod 2¹⁶ 덧셈, mod 2¹⁶+1 곱셈 세 연산 혼합), ARX(Addition-Rotation-XOR만 사용 → 경량·고속: LEA, HIGHT, CHAM, ChaCha20).

3-4. DES와 3DES

DES (Data Encryption Standard) — 1977년 미국 표준(IBM 루시퍼 기반).

항목 값
블록 64비트
키 64비트 중 8비트는 패리티 → 실제 56비트
구조 Feistel 16라운드
라운드키 48비트 × 16개
라운드 함수 F 확장(E: 32→48비트) → 라운드키 XOR → S-box 8개(각 6비트→4비트, 유일한 비선형 요소) → P-box 순열
전후 처리 초기 순열(IP) … 최종 순열(IP⁻¹)

3DES (Triple DES, TDEA): C = E_K3( D_K2( E_K1(P) ) ) — 암호화-복호화-암호화(EDE)

3-5. AES (★)

AES (Advanced Encryption Standard) — 2001년 미국 표준(FIPS 197). 공모전에서 벨기에의 Rijndael(레인달) 이 선정(결선: MARS, RC6, Serpent, Twofish).

키 길이 라운드 수 블록
128비트 10 128비트 고정
192비트 12 128비트
256비트 14 128비트

상태(State): 128비트 = 16바이트를 4×4 바이트 행렬로 놓고 연산 (열 단위로 채움).

 ┌────┬────┬────┬────┐
 │ b0 │ b4 │ b8 │ b12│  ← 0행: 이동 없음
 ├────┼────┼────┼────┤
 │ b1 │ b5 │ b9 │ b13│  ← 1행: 왼쪽으로 1바이트
 ├────┼────┼────┼────┤
 │ b2 │ b6 │ b10│ b14│  ← 2행: 왼쪽으로 2바이트
 ├────┼────┼────┼────┤
 │ b3 │ b7 │ b11│ b15│  ← 3행: 왼쪽으로 3바이트
 └────┴────┴────┴────┘

라운드 함수 4단계

단계 하는 일 역할
SubBytes 각 바이트를 S-box 표로 치환 (GF(2⁸) 곱셈 역원 + 아핀 변환) 혼돈 (유일한 비선형)
ShiftRows 행 r을 왼쪽으로 r바이트 순환 이동 확산 (열 간 섞기)
MixColumns 각 열(4바이트)에 GF(2⁸) 위 행렬 곱 확산 (열 안 섞기)
AddRoundKey 라운드키와 XOR 키 결합 (유일하게 키 사용)
flowchart TD
    P[평문 128비트] --> K0["AddRoundKey (K0) — 초기 라운드"]
    K0 --> R["라운드 1 ~ Nr-1
SubBytes → ShiftRows → MixColumns → AddRoundKey"] R --> F["마지막 라운드 Nr
SubBytes → ShiftRows → AddRoundKey
(MixColumns 생략)"] F --> C[암호문 128비트]

3-6. 국산 및 기타 블록 암호

알고리즘 블록 키 라운드 구조 개발/표준 비고
SEED 128 128 (SEED 256: 256) 16 (256: 24) Feistel KISA, 1999 / TTA, ISO/IEC 18033-3 국내 금융·전자상거래
ARIA 128 128/192/256 12/14/16 SPN(ISPN, 인볼루션) 국가보안기술연구소(NSR) 주도, 2004 / KS X 1213 국가 표준, 공공
HIGHT 64 128 32 변형 Feistel(ARX) 2005 / TTA, ISO/IEC 18033-3 경량: RFID·센서
LEA 128 128/192/256 24/28/32 ARX NSR, 2013 / KS X 3246, ISO/IEC 29192-2 경량+고속, SW 성능 우수
CHAM 64/128 128/256 다양 ARX(변형 Feistel) NSR, 2017 초경량 IoT
IDEA 64 128 8 + 출력변환(8.5) Lai-Massey 계열 스위스(Lai·Massey) PGP 사용
Blowfish 64 32~448 16 Feistel 슈나이어 무료 공개, bcrypt의 기반
Skipjack 64 80 32 비평형 Feistel 미국 NSA 클리퍼 칩(키 위탁)
Camellia 128 128/192/256 18/24 Feistel 일본 ISO 표준

3-7. 스트림 암호: OTP · LFSR · RC4

OTP (One-Time Pad, 버냄 암호): 평문과 같은 길이의 완전 난수 키를 한 번만 XOR. 샤논이 증명한 완전 비밀성(Perfect Secrecy) — 이론상 해독 불가. 그러나 키 길이 = 메시지 길이라 키 분배가 비현실적, 키를 재사용하면 C1 ⊕ C2 = P1 ⊕ P2가 되어 깨짐.

현실의 스트림 암호는 짧은 키 → 긴 의사난수 키스트림을 만들어 OTP를 흉내 냅니다.

LFSR (선형 피드백 시프트 레지스터): 레지스터의 몇 비트를 XOR해서 새 비트를 밀어 넣는 간단한 하드웨어 난수 생성기.

✏️ 예시: 3비트 LFSR, 점화식 sₙ₊₃ = sₙ₊₁ ⊕ sₙ (다항식 x³ + x + 1)

초기값 s₀=1, s₁=0, s₂=0

n 계산 sₙ
3 s₁ ⊕ s₀ = 0 ⊕ 1 1
4 s₂ ⊕ s₁ = 0 ⊕ 0 0
5 s₃ ⊕ s₂ = 1 ⊕ 0 1
6 s₄ ⊕ s₃ = 0 ⊕ 1 1
7 s₅ ⊕ s₄ = 1 ⊕ 0 1
8 s₆ ⊕ s₅ = 1 ⊕ 1 0
9 s₇ ⊕ s₆ = 1 ⊕ 1 0

출력: 1 0 0 1 0 1 1 | 1 0 0 … → s₇,s₈,s₉ = 1,0,0 = 처음 상태와 같으므로 주기 7 = 2³ − 1 (n비트 LFSR의 최대 주기 = 2ⁿ − 1, 모두 0인 상태 제외).

RC4: 1987년 리베스트. 바이트 단위, 키 40~2048비트 가변. KSA(키 스케줄링: 256바이트 S배열 섞기) → PRGA(키스트림 생성). 매우 빠르고 단순해 WEP, WPA-TKIP, 구 SSL/TLS에서 쓰였으나 초기 키스트림 편향 등 취약점으로 WEP 해독, TLS에서 사용 금지(RFC 7465).

3-8. 블록 암호 운영 모드 (★★)

블록 암호는 128비트씩만 처리하므로, 긴 메시지를 어떻게 연결해서 처리할지 정한 것이 운영 모드입니다. (E = 암호화, D = 복호화, P = 평문 블록, C = 암호문 블록)

① ECB (Electronic Codebook) — C_i = E(P_i)

 P1      P2      P3
  │       │       │
 [E]     [E]     [E]
  │       │       │
 C1      C2      C3        같은 P → 같은 C (패턴 노출!)

② CBC (Cipher Block Chaining) — C_i = E(P_i ⊕ C_(i−1)), C_0 = IV

       P1           P2           P3
        │            │            │
 IV ──►(⊕)   ┌─────►(⊕)   ┌─────►(⊕)
        │    │       │    │       │
       [E]   │      [E]   │      [E]
        │    │       │    │       │
       C1 ───┘      C2 ───┘      C3

③ CFB (Cipher Feedback) — C_i = P_i ⊕ E(C_(i−1))

 IV ──►[E]    ┌──►[E]    ┌──►[E]
        │     │     │     │     │
 P1 ──►(⊕)    │ P2►(⊕)    │ P3►(⊕)
        │     │     │     │     │
       C1 ────┘    C2 ────┘    C3

④ OFB (Output Feedback) — O_i = E(O_(i−1)), O_0 = IV, C_i = P_i ⊕ O_i

 IV ──►[E]──►[E]──►[E]     ← 키스트림은 평문/암호문과 무관하게 E 출력만 되먹임
        │     │     │
 P1 ──►(⊕)  P2►(⊕) P3►(⊕)
        │     │     │
       C1    C2    C3

⑤ CTR (Counter) — C_i = P_i ⊕ E(Nonce ‖ Counter_i)

 Nonce‖1   Nonce‖2   Nonce‖3
    │         │         │
   [E]       [E]       [E]
    │         │         │
 P1►(⊕)   P2►(⊕)   P3►(⊕)
    │         │         │
   C1        C2        C3       ← 블록끼리 서로 독립

운영 모드 비교표

항목 ECB CBC CFB OFB CTR
IV/Nonce ✗ ○ ○ ○ ○(Nonce)
같은 평문→같은 암호문 ○(취약) ✗ ✗ ✗ ✗
암호화 병렬 ○ ✗ ✗ ✗ ○
복호화 병렬 ○ ○ ○ ✗ ○
랜덤 접근 ○ ○(복호) ○(복호) ✗ ○
패딩 필요 ○ ○ ✗ ✗ ✗
복호화에 쓰는 함수 D D E E E
스트림 방식 ✗ ✗ ○(자기동기) ○(동기) ○(동기)

✏️ 오류 전파 연습: 전송 중 암호문 C2의 1비트가 깨졌다면?

모드 P2 P3 P4 이후 이유
ECB 블록 전체 깨짐 정상 정상 D(C2)만 영향
CBC 블록 전체 깨짐 같은 위치 1비트만 뒤집힘 정상 P3 = D(C3) ⊕ C2 이므로 C2의 오류 비트가 그대로 XOR
CFB 같은 위치 1비트만 블록 전체 깨짐 정상 P2 = C2 ⊕ E(C1): XOR로 1비트 / P3 = C3 ⊕ E(C2): E를 통과해 전체
OFB 1비트만 정상 정상 키스트림은 암호문과 무관
CTR 1비트만 정상 정상 블록 독립, XOR만

요령: CBC와 CFB는 "2블록" 영향(순서가 반대), ECB는 1블록 전체, OFB·CTR은 1비트. 단, CBC에서 평문 1비트를 잘못 입력한 경우는 이후 모든 암호문이 달라지지만 복호화하면 그 평문 비트만 틀린 채 정상 복원됩니다(오류 "전파"와 구분).

패딩 (Padding)

ECB·CBC는 평문이 블록 크기의 배수여야 해서 끝을 채웁니다. 가장 흔한 PKCS#7: 부족한 바이트 수 N을 값 N으로 N번 채움.

블록 8바이트, 평문 "HELLO"(5바이트) → 3바이트 부족
48 45 4C 4C 4F | 03 03 03
평문이 정확히 8바이트라면 → 08 08 08 08 08 08 08 08 (한 블록 통째로 추가)

인증 암호화 (AEAD) 및 기타 모드

모드 구성 특징
GCM (Galois/Counter Mode) CTR 암호화 + GHASH 인증 병렬·고속, TLS 1.3 기본(AES-GCM)
CCM CTR + CBC-MAC 무선(802.11i WPA2-CCMP), 2패스
XTS 디스크 섹터 암호화 BitLocker 등 저장장치

AEAD는 기밀성 + 무결성 + 인증을 한 번에 제공. 패딩 오라클·비트 플리핑 같은 공격을 원천 차단합니다.

3-9. 암호 분석(공격) 유형 (★)

① 공격자가 가진 정보에 따른 분류 (아래로 갈수록 공격자에게 유리 = 강한 공격 모델)

공격 공격자가 가진 것 예
암호문 단독 공격 (COA) 암호문만 빈도 분석
기지 평문 공격 (KPA) 평문-암호문 쌍 몇 개(우연히 획득) 선형 공격, 2차대전 에니그마
선택 평문 공격 (CPA) 원하는 평문을 골라 암호화시킬 수 있음 차분 공격, 공개키 암호는 기본적으로 CPA 가능
선택 암호문 공격 (CCA) 원하는 암호문을 골라 복호화시킬 수 있음 패딩 오라클, RSA 교재식 공격

② 분석 기법

기법 설명
전수 공격(Brute Force) 모든 키를 시도. k비트 키 → 최대 2ᵏ번, 평균 2ᵏ⁻¹번
차분 공격 (Differential) 1990 비함·샤미르. 평문 쌍의 차이(XOR) 가 암호문 차이로 어떻게 전파되는지 통계 분석 → 선택 평문
선형 공격 (Linear) 1993 마쓰이(Matsui). 평문·암호문·키 비트 사이의 선형 근사식 이용 → 기지 평문. DES를 2⁴³ 평문으로 해독
중간 일치 (MITM) 양쪽에서 계산해 가운데서 맞춰봄 → 2중 DES 무력화
생일 공격 충돌 찾기에 2^(n/2) (Day 5)
부채널(사이드 채널) 공격 알고리즘이 아니라 구현의 물리 정보 이용: 시간(Timing), 전력(SPA/DPA), 전자파, 소리, 캐시
오류 주입(Fault) 공격 전압·레이저로 일부러 오류를 내 결과 비교
사전/레인보우 테이블 패스워드 해시 대상 (Day 5)

✏️ 계산: 전수 공격 시간

⚠️ 시험 함정 (Day 3)

📌 기출 포인트 (Day 3)

📝 확인 문제 (Day 3)

Q1. AES에 대한 설명으로 옳지 않은 것은?
① 블록 크기는 키 길이와 관계없이 128비트이다
② AES-192의 라운드 수는 12이다
③ 마지막 라운드에서는 ShiftRows 연산이 생략된다
④ SubBytes는 S-box를 이용한 비선형 치환이다

Q2. 다음 설명에 해당하는 블록 암호 운영 모드는?
"각 블록이 카운터 값의 암호화 결과와 XOR되어 독립적으로 처리되므로 암·복호화 모두 병렬 처리가 가능하고 특정 블록만 복호화할 수 있다."
① CBC ② OFB ③ CTR ④ CFB

Q3. CBC 모드로 암호화된 메시지 전송 중 암호문 블록 C3의 한 비트가 변조되었다. 복호화 결과에 대한 설명으로 옳은 것은?
① P3만 블록 전체가 손상된다
② P3 전체와 P4의 대응 비트가 손상되고 P5 이후는 정상이다
③ P3 이후 모든 평문 블록이 손상된다
④ P3의 해당 비트 하나만 손상된다

Q4. 국산 블록 암호에 대한 연결로 옳지 않은 것은?
① SEED – 128비트 블록, Feistel 구조
② ARIA – 128비트 블록, SPN 구조, 키 128/192/256비트
③ HIGHT – 128비트 블록, SPN 구조의 고속 암호
④ LEA – 128비트 블록, ARX 연산 기반 경량 암호

Q5. 공격자가 임의로 선택한 평문을 암호화한 결과를 얻을 수 있다고 가정하는 공격 모델과, 이 모델을 사용하는 대표적 분석 기법이 바르게 짝지어진 것은?
① 기지 평문 공격 – 선형 공격
② 선택 평문 공격 – 차분 공격
③ 선택 암호문 공격 – 선형 공격
④ 암호문 단독 공격 – 차분 공격

Q6. Feistel 구조에 대한 설명으로 옳은 것은?
① 라운드 함수 F는 반드시 역함수가 존재해야 한다
② 매 라운드마다 블록 전체가 치환된다
③ 복호화는 암호화와 같은 구조에 라운드키를 역순으로 적용한다
④ AES와 ARIA가 대표적인 Feistel 구조이다


Day 4 · 공개키 암호 심화

4-1. 공개키 암호의 핵심: 일방향 함정문 함수

공개키 암호의 기본 개념(공개키로 암호화 → 개인키로 복호화, 개인키로 서명 → 공개키로 검증)은 Week03_보안 개념과 암호 기초에서 다뤘습니다. 오늘은 "왜 공개키로 개인키를 알아낼 수 없는가" 를 수학으로 이해합니다.

기반 수학 문제 쉬운 방향 어려운 방향 알고리즘
소인수분해 p × q = n n → p, q RSA, Rabin
이산대수(DLP) gˣ mod p gˣ mod p → x 디피-헬먼, 엘가말, DSA, KCDSA, Schnorr
타원곡선 이산대수(ECDLP) k × P = Q (점 곱셈) Q, P → k ECC: ECDH, ECDSA, EC-KCDSA, EdDSA
배낭(Knapsack) 문제 부분합 합 → 부분집합 Merkle-Hellman (깨짐)
오류 정정 부호 – – McEliece (PQC 후보)
격자(Lattice) – – ML-KEM, ML-DSA (PQC, Day 6)

4-2. 모듈러 연산 입문 (RSA 계산의 필수 도구)

① 합동: a ≡ b (mod n) ⇔ a와 b를 n으로 나눈 나머지가 같음. 예) 17 ≡ 2 (mod 5), −4 ≡ 19 (mod 23)

② 최대공약수(gcd)와 서로소: gcd(a, b) = 1이면 서로소. 유클리드 호제법으로 구함.

gcd(40, 3):  40 = 13 × 3 + 1
              3 =  3 × 1 + 0   → gcd = 1 (서로소)

③ 오일러 피 함수 φ(n): 1 ~ n 중 n과 서로소인 수의 개수

④ 페르마 소정리 / 오일러 정리

⑤ 모듈러 역원: a × x ≡ 1 (mod n)인 x = a⁻¹ mod n. gcd(a, n) = 1일 때만 존재. 확장 유클리드로 구함.

예1) 3⁻¹ mod 40
  40 = 13×3 + 1  →  1 = 40 − 13×3
  → 3 × (−13) ≡ 1 (mod 40)  →  −13 + 40 = 27
  검산: 3 × 27 = 81 = 2×40 + 1 ✔   ∴ 3⁻¹ ≡ 27 (mod 40)

예2) 7⁻¹ mod 60
  60 = 8×7 + 4
   7 = 1×4 + 3
   4 = 1×3 + 1
  거꾸로: 1 = 4 − 3 = 4 − (7 − 4) = 2×4 − 7
           = 2×(60 − 8×7) − 7 = 2×60 − 17×7
  → 7 × (−17) ≡ 1  →  −17 + 60 = 43
  검산: 7 × 43 = 301 = 5×60 + 1 ✔   ∴ 7⁻¹ ≡ 43 (mod 60)

작은 수는 그냥 e × d를 1, n+1, 2n+1, 3n+1 … 중 하나가 되도록 찾아도 됩니다(3 × ? = 41? ✗, 81 ✔ → 27). 시험에서는 이 방법이 가장 빠릅니다.

⑥ 빠른 거듭제곱 (제곱-곱셈법): 지수를 2진수로 쪼개 제곱을 반복하며 매번 mod.

4-3. RSA (★)

1977년 Rivest, Shamir, Adleman. 암호화와 전자서명 둘 다 가능. 안전성 = 큰 수의 소인수분해 어려움.

flowchart TD
    A["① 큰 소수 p, q 선택 (비밀)"] --> B["② n = p × q (공개)"]
    B --> C["③ φ(n) = (p−1)(q−1) (비밀)"]
    C --> D["④ e 선택: 1 #lt; e #lt; φ(n), gcd(e, φ(n)) = 1"]
    D --> E["⑤ d = e⁻¹ mod φ(n) 즉 e·d ≡ 1 (mod φ(n))"]
    E --> F["공개키 (e, n) / 개인키 (d, n) — p, q, φ(n)은 폐기 또는 비밀"]

✏️ RSA 손계산 예제: p = 5, q = 11, e = 3, 평문 M = 7

[키 생성]

  1. n = 5 × 11 = 55
  2. φ(n) = 4 × 10 = 40
  3. e = 3 → gcd(3, 40) = 1 ✔
  4. d = 3⁻¹ mod 40 = 27 (위 4-2 예1, 3 × 27 = 81 = 2×40 + 1)
  5. 공개키 (3, 55), 개인키 (27, 55)

[암호화] C = 7³ mod 55 = 343 mod 55 → 55 × 6 = 330, 343 − 330 = 13 → C = 13

[복호화] M = 13²⁷ mod 55 (27 = 16 + 8 + 2 + 1)

거듭제곱 계산 mod 55
13¹ 13 13
13² 169 = 55×3 + 4 4
13⁴ 4² = 16 16
13⁸ 16² = 256 = 55×4 + 36 36
13¹⁶ 36² = 1296 = 55×23 + 31 31

13²⁷ = 13¹⁶ × 13⁸ × 13² × 13¹ ≡ 31 × 36 × 4 × 13

[전자서명] 같은 키로 M = 7에 서명: S = 7²⁷ mod 55

더 작은 예(암산용): p=3, q=11 → n=33, φ=20, e=3, d=7(3×7=21≡1). M=4 → C = 4³ = 64 ≡ 31. 복호화 31⁷: 31 ≡ −2 → (−2)⁷ = −128 ≡ −128 + 132 = 4 ✅

RSA 안전성과 실무

4-4. Rabin 암호

예) n = 77 (7 × 11), M = 20
  C = 20² = 400 = 77×5 + 15 → C = 15
  15의 제곱근 mod 7 : 15 ≡ 1 → ±1
  15의 제곱근 mod 11: 15 ≡ 4 → ±2
  중국인의 나머지 정리로 조합 → {13, 20, 57, 64}  (각각 제곱하면 모두 15 mod 77)
  → 4개 중 원래 M = 20을 골라야 함

4-5. 엘가말(ElGamal) 암호

1985년. 이산대수 문제 기반. 디피-헬먼을 암호화 방식으로 바꾼 것.

✏️ 예제: p = 23, g = 5, 개인키 x = 6 → 공개키 y = 5⁶ mod 23 = 8 (Day 2 계산)

평문 M = 10, 난수 k = 3

복호화

같은 평문, 다른 난수 k = 2로 다시 암호화하면?

엘가말의 특징 (★)

4-6. 타원곡선 암호(ECC)

1985년 코블리츠·밀러가 각각 제안. 유한체 위의 타원곡선 y² = x³ + ax + b 위의 점들로 연산.

4-7. 키 길이 대비 보안 강도 (NIST SP 800-57 기준)

보안 강도(비트) 대칭키 RSA·DH·DSA ECC 해시(충돌 저항)
80 (사용 금지) 2TDEA 1024 160 SHA-1
112 3TDEA 2048 224 SHA-224
128 AES-128 3072 256 SHA-256
192 AES-192 7680 384 SHA-384
256 AES-256 15360 512 SHA-512

외울 것: RSA 3072 ≈ ECC 256 ≈ AES-128. RSA는 강도를 2배로 올리려면 키가 훨씬 많이 늘어나지만 ECC는 키 길이가 강도의 약 2배로 선형적으로 늘어납니다. 해시는 생일 공격 때문에 출력의 절반이 강도.

4-8. 전자서명 알고리즘: DSA · KCDSA · ECDSA

알고리즘 기반 특징
RSA 서명 소인수분해 암호화와 같은 수학, PSS 패딩 권장
DSA 이산대수 미국 DSS(FIPS 186) 표준. 서명 전용(암호화 불가). 엘가말·슈노어 서명 변형. 서명 = (r, s). FIPS 186-5(2023)에서 신규 서명 생성용으로는 제외
KCDSA 이산대수 국산 전자서명 표준(TTA). 서명자 공개키 정보를 해시에 포함
EC-KCDSA 타원곡선 KCDSA의 타원곡선 버전
ECDSA 타원곡선 DSA의 ECC 버전. 비트코인·TLS
EdDSA (Ed25519) 타원곡선(에드워즈) 결정적 난수 생성으로 k 재사용 실수 방지, 빠름
Schnorr 이산대수 간결, 다중서명 합치기 용이(비트코인 Taproot)

4-9. 하이브리드 암호 (전자봉투, Digital Envelope)

대칭키(빠름) + 공개키(키 분배 쉬움)의 장점을 결합.

sequenceDiagram
    participant A as 송신자
    participant B as 수신자
    Note over A: ① 랜덤 세션키 K 생성
    Note over A: ② 데이터를 K로 대칭 암호화 (AES)
    Note over A: ③ K를 B의 공개키로 암호화 (RSA/ECIES)
    A->>B: [AES_K(데이터)] + [RSA_PubB(K)] = 전자봉투
    Note over B: ④ 개인키로 K 복원
    Note over B: ⑤ K로 데이터 복호화
비교 대칭키 공개키
키 관계 암·복호화 키 같음 공개키 ≠ 개인키
속도 빠름 느림
키 개수(n명) n(n−1)/2 2n
키 분배 어려움 쉬움
부인방지 ✗ ○ (전자서명)
주 용도 대량 데이터 암호화 키 교환, 전자서명

⚠️ 시험 함정 (Day 4)

📌 기출 포인트 (Day 4)

📝 확인 문제 (Day 4)

Q1. RSA에서 p = 7, q = 13, e = 5일 때 개인키 d는?
① 29 ② 31 ③ 43 ④ 65

Q2. RSA 공개키 (e, n) = (3, 33)으로 평문 M = 5를 암호화한 암호문은?
① 2 ② 8 ③ 15 ④ 26

Q3. 엘가말(ElGamal) 암호에 대한 설명으로 옳지 않은 것은?
① 이산대수 문제의 어려움에 기반한다
② 암호화할 때마다 난수를 사용하므로 같은 평문도 다른 암호문이 된다
③ 암호문의 길이가 평문의 약 2배가 된다
④ 서명 기능은 없고 암호화 기능만 제공한다

Q4. 공개키 알고리즘과 기반 수학 문제의 연결로 옳지 않은 것은?
① Rabin – 소인수분해 ② DSA – 이산대수 ③ KCDSA – 소인수분해 ④ ECDSA – 타원곡선 이산대수

Q5. ECC에 대한 설명으로 옳은 것은?
① RSA와 동일한 보안 강도를 얻으려면 더 긴 키가 필요하다
② 256비트 ECC는 약 3072비트 RSA와 비슷한 보안 강도를 갖는다
③ 소인수분해 문제에 기반한다
④ 양자컴퓨터의 쇼어 알고리즘에 대해 안전하다

Q6. 하이브리드 암호 방식(전자봉투)에 대한 설명으로 옳은 것은?
① 데이터는 공개키로, 세션키는 대칭키로 암호화한다
② 세션키는 송신자의 개인키로 암호화해 전송한다
③ 데이터는 대칭키로 암호화하고, 그 대칭키는 수신자의 공개키로 암호화한다
④ 대칭키 암호의 키 분배 문제를 해결하지 못한다


Day 5 · 해시 · MAC · 전자서명 · PKI 심화

5-1. 해시 함수의 안전성 3가지 (복습 + 심화)

해시 함수는 임의 길이 입력 → 고정 길이 출력(다이제스트), 계산은 빠르고 되돌릴 수 없음. 기본 성질은 Week03_보안 개념과 암호 기초 참고. 여기서는 어떤 공격에 몇 번 시도가 필요한지까지 봅니다.

성질 의미 공격자가 하려는 것 n비트 해시의 공격 비용
역상 저항성 (일방향성) h가 주어질 때 H(x) = h인 x를 못 찾음 해시 → 원문 2ⁿ
제2 역상 저항성 (약한 충돌 저항) x가 주어질 때 H(x) = H(x′)인 다른 x′를 못 찾음 특정 문서와 같은 해시의 위조 문서 2ⁿ
충돌 저항성 (강한 충돌 저항) H(x) = H(x′)인 아무 쌍도 못 찾음 아무 두 문서나 해시 같게 2^(n/2) (생일 공격)

5-2. 해시의 내부 구조

① 머클-담고르(Merkle–Damgård) 구조 — MD5, SHA-1, SHA-2

         M1          M2          M3(+패딩+길이)
          │           │           │
 IV ──► [ f ] ──H1─► [ f ] ──H2─► [ f ] ──► 해시값
       압축함수     압축함수     압축함수

② 스펀지(Sponge) 구조 — SHA-3(Keccak), Ascon-Hash

 상태 1600비트 = [ rate r | capacity c ]
       흡수(Absorbing)                      짜내기(Squeezing)
 M1 ─►⊕                M2 ─►⊕                    ┌─► Z1 ─► Z2 …
       ▼                     ▼                    │
 [r|c]→[ f ]→[r|c]→[ f ]→[r|c]→ … →[ f ]→ [r|c] ─┘─[ f ]─► …

5-3. 주요 해시 알고리즘

알고리즘 출력 블록 라운드/단계 구조 상태
MD4 128 512 48 MD 깨짐
MD5 128 512 64 (4라운드×16) MD 충돌 실증(2004), 사용 금지
SHA-1 160 512 80 MD 실제 충돌(2017 SHAttered), 사용 금지
SHA-224/256 224/256 512 64 MD 권장(SHA-2)
SHA-384/512 384/512 1024 80 MD 권장(SHA-2)
SHA-3 (Keccak) 224/256/384/512 rate 가변 24 스펀지 2015 FIPS 202
SHAKE128/256 가변 – 24 스펀지 XOF
RIPEMD-160 160 512 – MD(2중 병렬) 비트코인 주소
HAS-160 160 512 80 MD 국산(구), KCDSA용
LSH LSH-256: 224/256, LSH-512: 224~512 1024/2048 26/28 와이드 파이프 MD 국산(KISA·NSR, 2014, KS X 3262)

5-4. 생일 역설과 생일 공격 (★)

생일 역설: 방에 23명만 있어도 생일이 같은 사람이 있을 확률이 50%를 넘습니다. 직관(365의 절반 ≈ 183명)보다 훨씬 적은 이유는 "특정 날짜와 같은 사람"이 아니라 "아무 두 사람끼리 같은 쌍"을 찾기 때문입니다(23명이면 쌍이 23×22/2 = 253개).

✏️ 계산

해시 출력 충돌 공격(생일) 역상 공격
(예시) 32비트 체크섬 32 2¹⁶ ≈ 65,536 (1.17배 하면 약 77,000번) 2³²
MD5 128 2⁶⁴ 2¹²⁸
SHA-1 160 2⁸⁰ 2¹⁶⁰
SHA-256 256 2¹²⁸ 2²⁵⁶
SHA-512 512 2²⁵⁶ 2⁵¹²

5-5. MAC과 HMAC

MAC(Message Authentication Code) = 공유 비밀키 K를 넣어 만든 체크섬. 키가 없으면 올바른 MAC을 만들 수 없으므로 무결성 + 메시지 출처 인증을 제공. 단, 양쪽이 같은 키를 가지므로 부인방지는 불가.

비교 해시 MAC 전자서명
키 없음 대칭(공유) 비밀키 개인키/공개키
무결성 ○ (단, 공격자가 해시도 다시 계산 가능) ○ ○
출처 인증 ✗ ○ ○
부인방지 ✗ ✗ ○
속도 가장 빠름 빠름 느림

MAC 종류

HMAC 구조

HMAC(K, M) = H( (K′ ⊕ opad) ‖ H( (K′ ⊕ ipad) ‖ M ) )

K′   = 키를 해시 블록 크기에 맞춘 것 (길면 해시, 짧으면 0으로 채움)
ipad = 0x36 반복 (inner padding)
opad = 0x5C 반복 (outer padding)

        K′⊕ipad ‖ M ──► [H] ──► 내부 해시
                                   │
        K′⊕opad ‖ 내부 해시 ──► [H] ──► HMAC 값

암호화와 MAC의 결합 순서

방식 방법 평가
Encrypt-then-MAC 암호화 후 암호문에 MAC 가장 안전(IPsec ESP), 위조 암호문을 복호화 전에 거부
MAC-then-Encrypt MAC 후 (평문+MAC) 암호화 구 TLS, 패딩 오라클 위험
Encrypt-and-MAC 평문 MAC + 암호화 따로 SSH, MAC이 평문 정보 노출 가능

5-6. 패스워드 안전 저장

단계 저장 방식 문제
0 평문 저장 DB 유출 = 즉시 노출
1 해시만 저장 H(pw) 레인보우 테이블(미리 계산한 해시 사전)로 역추적, 같은 비번 = 같은 해시
2 솔트(Salt) + 해시 H(salt‖pw) 사용자마다 랜덤 솔트 → 레인보우 테이블 무력화, 같은 비번도 다른 해시. 하지만 GPU로 빠르게 대입 가능
3 키 스트레칭 (해시를 수천~수십만 번 반복) 한 번 검증이 느려짐 → 대입 공격 비용 폭증
4 메모리 하드 함수 GPU/ASIC 병렬 공격까지 어렵게

✏️ 솔트의 효과

솔트 없음:  Alice "1234" → H("1234") = 03ac67…
            Bob   "1234" → H("1234") = 03ac67…   ← 같음! 한 명 뚫리면 둘 다
솔트 사용:  Alice salt=Xf9 → H("Xf9"‖"1234") = 8d1e…
            Bob   salt=k2Q → H("k2Q"‖"1234") = 51b7…   ← 다름
알고리즘 특징
PBKDF2 PKCS#5, HMAC을 반복 횟수(iteration) 만큼 반복. 표준·FIPS 인정, 단 메모리 사용 적어 GPU 공격에 약함
bcrypt Blowfish 기반, cost(작업 인자) 로 반복 2^cost. 솔트 내장
scrypt 메모리 하드(대용량 메모리 필요) → GPU·ASIC 공격 억제
Argon2 2015 패스워드 해싱 대회(PHC) 우승. 메모리·시간·병렬도 조절. Argon2id 권장

5-7. 전자서명 심화

서명 생성·검증 흐름(복습): 문서 → 해시 → 서명자 개인키로 서명 → (문서 + 서명) 전송 → 수신자는 서명자 공개키로 검증하고 직접 계산한 해시와 비교.

전자서명의 5대 요건 (★)

요건 의미
위조 불가 (Unforgeable) 개인키 소유자만 서명 생성 가능
서명자 인증 (User Authentication) 누구의 서명인지 공개키로 확인 가능
부인 방지 (Non-repudiation) 서명자가 나중에 서명 사실을 부인 못 함
변경 불가 (Unalterable) 서명된 문서 내용을 바꾸면 검증 실패
재사용 불가 (Not Reusable) 한 문서의 서명을 다른 문서에 옮겨 쓸 수 없음

특수 전자서명

서명 핵심 용도
은닉(Blind) 서명 서명자가 내용을 모른 채 서명 (차움, 1982) 전자화폐·전자투표 (익명성·추적 불가)
이중(Dual) 서명 두 정보를 연결하되 각 수신자는 자기 몫만 봄 SET 전자결제
대리(위임, Proxy) 서명 원 서명자가 권한을 위임해 대리인이 서명 출장 중 결재 위임
그룹 서명 그룹 구성원 누구나 그룹 이름으로 서명, 필요시 관리자만 서명자 확인 익명 조직 인증
다중(Multi) 서명 여러 명이 한 문서에 서명 공동 결재, 암호화폐 지갑
부인 방지(Undeniable) 서명 검증에 서명자의 협조(대화) 가 필요 소프트웨어 배포 통제
수신자 지정 서명 지정된 수신자만 검증 가능 기밀 결재

✏️ 은닉 서명 (RSA 기반) 예제 — 서명자 키 n = 55, e = 3, d = 27 (Day 4와 동일)

사용자는 메시지 m = 7에 서명을 받고 싶지만 서명자에게 7을 보여주기 싫습니다.

sequenceDiagram
    participant U as 사용자 (m = 7)
    participant S as 서명자 (d = 27)
    Note over U: ① 은닉 인자 r = 2 선택 (gcd(2,55) = 1)
    Note over U: m′ = m · r^e = 7 · 2³ = 56 ≡ 1 (mod 55)
    U->>S: m′ = 1 (원래 7인지 알 수 없음)
    Note over S: ② s′ = (m′)^d = 1^27 = 1
    S->>U: s′ = 1
    Note over U: ③ r⁻¹ mod 55 = 28 (2 × 28 = 56 ≡ 1)
    Note over U: s = s′ · r⁻¹ = 1 × 28 = 28

이중 서명 (SET) 구성

SET(Secure Electronic Transaction, 1996 비자·마스터카드)에서 고객은 주문정보(OI) 는 상점에, 지불정보(PI, 카드번호) 는 은행(지불 게이트웨이)에 보내야 합니다. 그런데 "이 주문과 이 지불은 한 거래다"라는 연결은 증명해야 합니다.

flowchart TD
    PI["지불정보 PI"] --> H1["H(PI) = PIMD"]
    OI["주문정보 OI"] --> H2["H(OI) = OIMD"]
    H1 --> C["PIMD ‖ OIMD"]
    H2 --> C
    C --> H3["H(PIMD ‖ OIMD) = POMD"]
    H3 --> DS["이중서명 DS = 고객 개인키로 POMD 서명"]

5-8. X.509 인증서 (v3)

인증서 = "이 공개키는 이 주체의 것"이라고 CA가 전자서명한 전자 문서. 국제 표준 ITU-T X.509 (인터넷 프로파일 RFC 5280).

버전 추가된 것
v1 (1988) 기본 필드
v2 (1993) 발급자·주체 고유 식별자(Unique ID)
v3 (1996) 확장(Extensions) 필드

기본 필드

필드 내용
버전 (Version) v3
일련번호 (Serial Number) CA 내에서 유일. 폐지 시 CRL에 기재되는 값
서명 알고리즘 (Signature Algorithm ID) 예: sha256WithRSAEncryption
발급자 (Issuer) 발급한 CA의 DN
유효기간 (Validity) notBefore ~ notAfter
주체 (Subject) 소유자 DN (CN=www.example.com 등)
주체 공개키 정보 (Subject Public Key Info) 알고리즘 + 공개키
발급자/주체 고유 ID v2 추가, 거의 안 씀
확장 (Extensions) v3 추가
CA의 전자서명 위 내용 전체에 대한 CA 서명

주요 v3 확장 필드 (각 확장은 중요(critical) 표시 가능: critical인데 이해 못 하면 인증서 거부)

확장 의미
기본 제약 (Basic Constraints) CA인지 여부(cA=TRUE/FALSE), 하위 경로 길이 제한(pathLen)
키 용도 (Key Usage) digitalSignature, keyEncipherment, keyCertSign, cRLSign 등
확장 키 용도 (Extended Key Usage) serverAuth, clientAuth, codeSigning, emailProtection 등
주체 대체 이름 (SAN) 도메인 여러 개, 이메일, IP (현재 브라우저는 CN 대신 SAN을 확인)
기관 키 식별자 (AKI) / 주체 키 식별자 (SKI) 체인 구성 시 상위 인증서 찾기
인증서 정책 (Certificate Policies) 발급 정책 OID
정책 매핑 / 정책 제약 / 이름 제약 상호 인증 시 정책·이름 공간 제한
CRL 배포 지점 (CRL DP) CRL을 받을 URL
기관 정보 접근 (AIA) OCSP 응답자 URL, 상위 CA 인증서 URL

5-9. PKI 구성과 신뢰 모델

PKI(공개키 기반구조) = 인증서를 발급·관리·폐지하는 사람, 정책, 시스템 전체.

구성요소 역할
CA (인증기관) 인증서 발급·서명, 폐지, CRL 발행
RA (등록기관) 사용자 신원 확인, 등록 대행 (인증서 서명은 안 함)
VA (검증기관) 인증서 유효성 검증 서비스 (OCSP 응답자 등)
디렉터리/저장소 인증서·CRL 공개 저장 (주로 LDAP)
사용자(End Entity) 인증서 소유자, 신뢰 당사자(Relying Party)

인증서 생명주기: 키 쌍 생성 → 신청 → RA 신원 확인 → CA 발급 → 배포/사용 → 검증 → (갱신) → 폐지·효력정지 또는 만료 → 보관.

인증 경로(신뢰 체인) 검증

flowchart TD
    R["루트 CA 인증서
(자체 서명, 브라우저/OS에 미리 내장 = 신뢰 앵커)"] -->|서명| I["중간 CA 인증서
Issuer = 루트 / BasicConstraints cA=TRUE"] I -->|서명| L["서버(최종 개체) 인증서
Issuer = 중간 CA / SAN = www.example.com"]

검증 순서: 서버 인증서의 서명을 중간 CA 공개키로 확인 → 중간 CA 인증서를 루트 공개키로 확인 → 루트는 신뢰 저장소에 있으므로 신뢰. 각 단계마다 유효기간, 폐지 여부, 용도·제약, 도메인 이름을 함께 확인.

PKI 신뢰 모델

모델 구조 특징
계층(Hierarchical) 단일 루트 아래 트리 경로 단순, 루트 탈취 시 전체 붕괴. 국내 전자서명 체계(KISA 최상위 인증기관)
망형/메시(Mesh, Network) CA끼리 상호 인증(Cross-certification) 유연·장애에 강함, 경로 탐색 복잡
브리지 CA (Hub & Spoke) 중앙 브리지 CA가 각 PKI와 상호 인증 상호 인증 수 n(n−1)/2 → n으로 감소 (미 연방 Bridge CA)
웹(브라우저) 모델 브라우저에 다수 루트 CA 미리 내장 현재 인터넷. 하나라도 부실 CA면 위험
사용자 중심 (Web of Trust) 사용자끼리 서로의 키에 서명 PGP. 중앙 CA 없음

5-10. 인증서 폐지: CRL vs OCSP (★)

개인키 유출·소속 변경 등으로 유효기간 전에 인증서를 무효화하는 것이 폐지(Revocation).

CRL (Certificate Revocation List): CA가 폐지된 인증서의 일련번호 목록에 서명해 주기적으로 게시.

OCSP (Online Certificate Status Protocol, RFC 6960): 클라이언트가 OCSP 응답자에게 특정 인증서 하나의 상태를 실시간 질의.

OCSP 스테이플링 (TLS Certificate Status Request 확장): 웹 서버가 미리 OCSP 응답(CA 서명됨)을 받아 두었다가 TLS 핸드셰이크 때 인증서와 함께 "스테이플러로 찍어" 전달.

sequenceDiagram
    participant S as 웹 서버
    participant O as OCSP 응답자
    participant C as 브라우저
    S->>O: 주기적으로 내 인증서 상태 질의
    O->>S: 서명된 OCSP 응답 (good, 유효시간 포함)
    C->>S: TLS ClientHello (status_request)
    S->>C: 인증서 + 스테이플된 OCSP 응답
    Note over C: CA 서명 확인 → OCSP 서버에 직접 묻지 않음
비교 CRL OCSP OCSP 스테이플링
방식 목록 다운로드 건별 실시간 질의 서버가 응답을 첨부
실시간성 낮음(주기적) 높음 높음(응답 캐시 수명 내)
클라이언트 부담 큰 목록 다운·검색 작음 가장 작음
프라이버시 좋음 나쁨(질의 노출) 좋음
응답자 부하 낮음 높음 낮음

5-11. 국내 전자서명 제도 변화

⚠️ 시험 함정 (Day 5)

📌 기출 포인트 (Day 5)

📝 확인 문제 (Day 5)

Q1. 해시 함수에서 "주어진 입력 x에 대해 H(x) = H(y)를 만족하는 다른 입력 y를 찾는 것이 계산적으로 어려운 성질"은?
① 역상 저항성 ② 제2 역상 저항성 ③ 강한 충돌 저항성 ④ 일방향성

Q2. 출력 길이가 160비트인 해시 함수에 대해 생일 공격으로 충돌을 찾는 데 필요한 대략적인 연산 횟수는?
① 2⁸⁰ ② 2¹⁵⁹ ③ 2¹⁶⁰ ④ 2⁴⁰

Q3. HMAC에 대한 설명으로 옳지 않은 것은?
① 비밀키와 해시 함수를 결합해 메시지 인증 코드를 생성한다
② ipad와 opad라는 두 패딩 상수를 사용한다
③ 송신자의 개인키로 생성하므로 부인방지 기능을 제공한다
④ 해시를 이중으로 적용하여 길이 확장 공격에 강하다

Q4. SET에서 사용하는 이중 서명에 대한 설명으로 옳은 것은?
① 상점은 고객의 지불정보(카드번호)를 직접 확인할 수 있다
② 주문정보 해시와 지불정보 해시를 연결해 다시 해시한 값에 고객이 서명한다
③ 서명자가 메시지 내용을 모른 채 서명하는 방식이다
④ 여러 사람이 하나의 문서에 순차적으로 서명하는 방식이다

Q5. X.509 v3 인증서에 포함되지 않는 것은?
① 발급자 이름 ② 주체의 공개키 ③ 주체의 개인키 ④ 기본 제약(Basic Constraints) 확장

Q6. 인증서 상태 확인 방식에 대한 설명으로 옳지 않은 것은?
① CRL은 CA가 폐지된 인증서의 일련번호 목록을 주기적으로 서명해 게시한다
② OCSP는 특정 인증서의 상태를 실시간으로 질의하며 good, revoked, unknown으로 응답한다
③ OCSP 스테이플링은 웹 서버가 받아둔 OCSP 응답을 TLS 핸드셰이크 시 함께 전달한다
④ OCSP는 CRL보다 실시간성이 낮지만 클라이언트의 프라이버시 보호에 유리하다


Day 6 · 2027 신규 범위 (블록체인 · PQC · 동형암호 · 경량암호 · 딥페이크)

기출이 거의 없는 영역

2027~2029 출제기준에서 새로 명시된 범위입니다. 복원 기출로 연습할 수 없으므로 정의·대표 알고리즘·장단점 위주로 개념을 정확히 잡아 두세요. 처음 출제될 때는 대개 "옳은/옳지 않은 설명 고르기" 형태로 나옵니다.

6-1. 블록체인

블록체인 = 거래 기록을 블록에 담고, 각 블록이 이전 블록의 해시값을 품어 사슬처럼 연결한 분산 원장. 중앙 관리자 없이 참여자(노드)들이 같은 장부 사본을 나눠 가지고 합의 알고리즘으로 다음 블록을 결정합니다.

┌──────────────────────┐   ┌──────────────────────┐   ┌──────────────────────┐
│ 블록 #100            │   │ 블록 #101            │   │ 블록 #102            │
│ 이전 해시: 7a3f…     │◄──│ 이전 해시: H(#100)   │◄──│ 이전 해시: H(#101)   │
│ 머클 루트: c91e…     │   │ 머클 루트: 04bd…     │   │ 머클 루트: e5a2…     │
│ 타임스탬프 / 난이도  │   │ 타임스탬프 / 난이도  │   │ 타임스탬프 / 난이도  │
│ 논스(nonce)          │   │ 논스(nonce)          │   │ 논스(nonce)          │
├──────────────────────┤   ├──────────────────────┤   ├──────────────────────┤
│ 거래 Tx1, Tx2, …     │   │ 거래 …               │   │ 거래 …               │
└──────────────────────┘   └──────────────────────┘   └──────────────────────┘
          (블록 헤더 = 위 칸, 블록 바디 = 거래 목록)

왜 변조가 어려운가: #100의 거래 하나를 고치면 → #100의 머클 루트가 바뀜 → #100 블록 해시가 바뀜 → #101에 저장된 "이전 해시"와 불일치 → #101, #102 … 이후 모든 블록을 다시 계산해야 하고, 그동안 다른 노드들은 계속 새 블록을 붙이므로 따라잡을 수 없음. 게다가 수많은 노드가 원본 사본을 가지고 있음.

머클 트리(Merkle Tree): 거래들을 쌍으로 해시하며 올라가 하나의 머클 루트를 만듦.

flowchart BT
    T1[Tx1] --> H1["H1 = H(Tx1)"]
    T2[Tx2] --> H2["H2 = H(Tx2)"]
    T3[Tx3] --> H3["H3 = H(Tx3)"]
    T4[Tx4] --> H4["H4 = H(Tx4)"]
    H1 --> H12["H12 = H(H1‖H2)"]
    H2 --> H12
    H3 --> H34["H34 = H(H3‖H4)"]
    H4 --> H34
    H12 --> R["머클 루트 = H(H12‖H34)"]
    H34 --> R

합의 알고리즘

방식 블록 생성권을 얻는 방법 장점 단점 예
작업증명 (PoW) 해시 퍼즐을 먼저 푼 노드 검증된 안전성, 탈중앙 막대한 전력, 느림 비트코인
지분증명 (PoS) 보유(예치) 지분에 비례해 검증자 선정 에너지 효율 부익부, 초기 분배 문제 이더리움(2022 머지 이후)
위임지분증명 (DPoS) 지분 보유자가 대표 노드 투표 빠름 중앙화 경향 EOS
PBFT 계열 노드 간 투표(1/3 미만 악의 노드 허용) 즉시 확정 노드 수 제한 프라이빗/컨소시엄

작업증명(PoW) 동작 원리

블록체인 공격

공격 내용
51% 공격 전체 연산력(PoS는 지분)의 과반을 장악해 더 긴 체인을 만들어 거래 뒤집기 → 이중 지불
이중 지불 (Double Spending) 같은 코인을 두 번 사용
시빌 공격 (Sybil) 가짜 신원(노드)을 대량 생성해 영향력 확보 → PoW/PoS가 비용을 부과해 방어
이기적 채굴 (Selfish Mining) 찾은 블록을 숨겼다가 한꺼번에 공개
스마트 컨트랙트 취약점 코드 버그 악용(재진입 공격 — 2016 The DAO)
개인키 탈취 거래소·지갑 해킹. 블록체인 자체가 아니라 키 관리 문제
유형 참여 예
퍼블릭 누구나 비트코인, 이더리움
프라이빗 허가된 단일 조직 기업 내부
컨소시엄 허가된 여러 기관 Hyperledger Fabric, 은행 연합

6-2. 양자내성암호 (PQC, Post-Quantum Cryptography)

양자컴퓨터가 암호에 주는 위협

양자 알고리즘 하는 일 영향받는 암호 대응
쇼어(Shor), 1994 소인수분해·이산대수를 다항식 시간에 해결 RSA, DH, DSA, 엘가말, ECC 전부 붕괴 PQC로 교체
그로버(Grover), 1996 정렬 안 된 탐색을 √N 번으로 → 전수 공격 제곱근 단축 대칭키·해시 강도 절반 (AES-128 → 약 64비트) 키·해시 길이 2배 (AES-256, SHA-384 이상)

PQC 수학 계열

계열 기반 문제 대표 특징
격자 기반 LWE/Module-LWE, NTRU ML-KEM, ML-DSA, FN-DSA(Falcon) 주류, 속도·키 크기 균형
해시 기반 해시 함수 안전성만 가정 SLH-DSA(SPHINCS+), XMSS, LMS 서명 전용, 안전성 신뢰도 높음, 서명 큼
코드(부호) 기반 오류 정정 부호 해독 Classic McEliece, HQC 공개키 매우 큼
다변수 기반 다변수 이차방정식 Rainbow (2022 깨짐) –
아이소제니 기반 타원곡선 동종사상 SIKE (2022 깨짐) –

NIST PQC 표준 (2024년 8월 발표)

표준 이름 원래 이름 용도 계열
FIPS 203 ML-KEM CRYSTALS-Kyber 키 캡슐화(KEM) — 키 교환 격자
FIPS 204 ML-DSA CRYSTALS-Dilithium 전자서명 (주력) 격자
FIPS 205 SLH-DSA SPHINCS+ 전자서명 (백업) 해시
FIPS 206 (예정) FN-DSA Falcon 전자서명 (짧은 서명) 격자
(2025.3 추가 선정) HQC – KEM 백업 코드

국내: KpqC 공모전 — 국내 양자내성암호 표준화를 위해 진행, 2025년 1월 최종 알고리즘 선정: KEM SMAUG-T, NTRU+, 서명 HAETAE, AIMer. 정부는 2035년경까지 공공 분야 PQC 전환을 목표로 로드맵 추진.

전환 전략

6-3. 동형암호 (Homomorphic Encryption)

암호문 상태 그대로 연산하고, 그 결과를 복호화하면 평문끼리 연산한 결과와 같아지는 암호.

평문 세계:    3, 5  ──(더하기)──►  8
                │                  ▲
              암호화              복호화
                ▼                  │
암호문 세계: E(3), E(5) ──(암호문 연산 ⊕)──► E(8)
종류 가능한 연산 예
부분 동형 (PHE) 덧셈 또는 곱셈 중 하나만 무제한 RSA·엘가말(곱셈), Paillier(덧셈)
준동형 (SHE, Somewhat) 덧셈·곱셈 둘 다, 단 횟수 제한 BGV 초기형
완전 동형 (FHE) 덧셈·곱셈 무제한 → 임의 연산 2009 젠트리(Gentry), BGV, BFV, CKKS

✏️ 예제: RSA의 곱셈 동형성 (n = 55, e = 3 — Day 4 키)

6-4. 경량암호 (Lightweight Cryptography)

IoT 센서, RFID, 스마트카드, 의료 임플란트처럼 CPU·메모리·전력이 극히 제한된 기기용 암호. 목표: 작은 회로 면적(GE), 적은 메모리, 저전력, 짧은 지연 + 충분한 안전성.

알고리즘 출신 블록/키 구조 비고
HIGHT 한국(2005) 64 / 128 변형 Feistel(ARX) RFID·센서, ISO/IEC 18033-3
LEA 한국 NSR(2013) 128 / 128·192·256 ARX SW에서 AES보다 빠름, KS X 3246, ISO/IEC 29192-2
CHAM 한국 NSR(2017) 64·128 / 128·256 ARX 초경량
PRESENT 유럽(2007) 64 / 80·128 SPN ISO/IEC 29192-2, 초소형 하드웨어
SIMON / SPECK 미국 NSA(2013) 다양 Feistel / ARX ISO 표준화 무산
Ascon 오스트리아 연구진 상태 320비트 순열 스펀지 기반 AEAD+해시 NIST 경량암호 표준 (2023년 2월 선정)

6-5. 딥페이크와 AI 보안 위협

딥페이크(Deepfake) = 딥러닝(Deep learning) + 가짜(Fake). AI로 얼굴·음성·영상을 실제처럼 합성·조작한 콘텐츠.

생성 기술

위협

위협 예
사칭·사기 가족 목소리 보이스피싱, CEO 사칭 화상회의로 송금 지시
생체 인증 우회 얼굴·음성 인증, 비대면 본인확인(eKYC) 속이기
허위정보·여론 조작 정치인 가짜 연설, 선거 개입
성적 착취물·명예훼손 동의 없는 합성물
증거 신뢰성 붕괴 진짜 증거도 "딥페이크"라고 부인(거짓말쟁이의 배당, Liar's Dividend)

탐지와 대응

구분 방법
탐지 기술 합성 흔적(Artifact) 분석: 부자연스러운 눈 깜빡임, 경계면, 조명·그림자 불일치, 주파수 영역 이상, 입모양-음성 불일치 / AI 기반 탐지 모델
생체 인증 방어 라이브니스(Liveness) 탐지 = 위조 제시 공격 탐지(PAD, ISO/IEC 30107): 실제 사람인지 확인(움직임 요청, 깊이·적외선 센서)
출처 증명 디지털 워터마크(AI 생성물에 보이지 않는 표식), C2PA 콘텐츠 자격증명(촬영·편집 이력을 전자서명으로 기록)
절차적 대응 송금 요청 시 다른 채널로 재확인(콜백), 가족 간 암호 단어, 다중 승인
제도 AI 기본법(2026년 1월 시행): 생성형 AI 결과물 표시 의무 등 / 선거 기간 딥페이크 선거운동 제한 / 딥페이크 성착취물 제작·소지·시청 처벌 강화

함께 알아둘 AI 대상 공격

공격 내용
적대적 예제 (Adversarial Example) 사람 눈엔 안 보이는 미세 노이즈로 AI 오판 유도
데이터 오염 (Poisoning) 학습 데이터에 악성 데이터 주입
모델 추출 / 모델 역추론 (Inversion) 질의로 모델 복제, 학습 데이터(개인정보) 복원
프롬프트 인젝션 LLM에 악성 지시를 넣어 정책 우회·정보 유출

6-6. 암호 표준화 동향

기관 내용
NIST (미국) AES, SHA-2/3, PQC(FIPS 203·204·205), 경량암호 Ascon(SP 800-232), 2030년대 RSA·ECC 단계적 퇴출 계획
ISO/IEC JTC 1/SC 27 국제 정보보호 표준 (18033 암호, 29192 경량암호, 30107 PAD)
IETF TLS 1.3, 하이브리드 PQC 키 교환
국내 (KISA·NSR·TTA·KS) SEED, ARIA, HIGHT, LEA, LSH, KCDSA, KpqC, KCMVP(암호모듈 검증제도: 공공기관은 검증필 암호모듈 사용)

⚠️ 시험 함정 (Day 6)

📌 기출 포인트 (Day 6, 예상)

📝 확인 문제 (Day 6)

Q1. 양자컴퓨팅이 암호에 미치는 영향에 대한 설명으로 옳지 않은 것은?
① 쇼어 알고리즘은 RSA와 ECC의 안전성을 무너뜨린다
② 그로버 알고리즘은 대칭키 전수 공격을 제곱근 수준으로 단축한다
③ 그로버 알고리즘에 대응하려면 대칭키 길이를 2배로 늘리면 된다
④ 쇼어 알고리즘 때문에 AES-256도 더 이상 안전하지 않다

Q2. NIST 양자내성암호 표준과 용도의 연결로 옳은 것은?
① ML-KEM – 해시 기반 전자서명
② ML-DSA – 격자 기반 전자서명
③ SLH-DSA – 격자 기반 키 캡슐화
④ FN-DSA – 코드 기반 키 캡슐화

Q3. 블록체인에 대한 설명으로 옳지 않은 것은?
① 각 블록 헤더에는 이전 블록의 해시값이 포함된다
② 작업증명은 목표값보다 작은 해시를 만드는 논스를 찾는 방식이다
③ 지분증명은 작업증명보다 에너지 소모가 크다
④ 51% 공격은 과반의 연산력이나 지분을 확보해 거래 기록을 조작하는 공격이다

Q4. 동형암호에 대한 설명으로 옳은 것은?
① 암호문을 복호화하지 않고 연산한 결과를 복호화하면 평문 연산 결과와 같다
② Paillier 암호는 곱셈에 대한 완전 동형암호이다
③ 완전 동형암호는 연산 속도가 빨라 이미 대칭키 암호를 대체했다
④ RSA는 덧셈 동형성을 갖는다

Q5. 경량암호에 대한 설명으로 옳지 않은 것은?
① IoT 기기처럼 자원이 제한된 환경을 위한 암호이다
② HIGHT와 LEA는 국내에서 개발된 경량 블록 암호이다
③ NIST는 경량암호 표준으로 Ascon을 선정하였다
④ ARIA는 64비트 블록을 사용하는 대표적 국산 경량 암호이다

Q6. 딥페이크 대응 방안으로 가장 거리가 먼 것은?
① 생체 인증 시 라이브니스(위조 제시 공격) 탐지 적용
② AI 생성 콘텐츠에 디지털 워터마크 삽입 및 출처 정보 전자서명
③ 음성으로 송금을 지시받으면 다른 채널로 재확인
④ 영상 파일을 ECB 모드로 암호화하여 저장


Day 7 · 주간 정리

7-1. 주간 핵심 요약

접근통제 (Day 1)

항목 핵심
절차 식별 → 인증 → 인가 → 책임추적
3요소 정책(DAC/MAC/RBAC) · 메커니즘(ACL/CL/레이블) · 모델(BLP/Biba…)
DAC / MAC / RBAC 소유자·ID / 시스템·레이블 / 관리자·역할
행렬 행 = Capability(주체) · 열 = ACL(객체)
BLP 기밀성: No Read Up(ss) · No Write Down(*)
Biba 무결성: No Read Down · No Write Up
클락-윌슨 상업 무결성: TP·CDI·UDI·IVP, 직무 분리
만리장성 이해충돌, 이력 따라 동적 권한
기타 HRU(판정 불가) · Take-Grant(그래프, 판정 가능) · 래티스 · 비간섭(은닉 채널)

인증·키 분배 (Day 2)

항목 핵심
인증 유형 지식·소유·생체·행위 → MFA는 서로 다른 유형
OTP TOTP(시간) · HOTP(카운터) · 질의응답 · S/Key(해시 체인 역순)
바이오 FAR(타인 수락, 보안) · FRR(본인 거부, 편의) · CER 낮을수록 좋음
Kerberos 대칭키, KDC=AS+TGS, TGT, Authenticator+타임스탬프, 약점: 시간 동기화·KDC SPoF·패스워드 추측
SSO 계열 SAML(XML 인증) · OAuth(인가) · OIDC(인증, JWT)
AAA RADIUS(UDP, 패스워드만) · TACACS+(TCP 49, 전체) · Diameter(TCP/SCTP, 후속)
키 개수 대칭 n(n−1)/2 · 공개 2n · KDC 사용 시 n
공개키 분배 공개 발표 → 공개 디렉터리 → 관리기관 → 인증서
DH 이산대수, 키 교환 전용, MITM 취약 → 인증 결합

대칭키 (Day 3)

항목 핵심
원리 혼돈(치환) · 확산(전치) · 쇄도 효과
Feistel / SPN 절반·역함수 불필요·같은 구조(DES, SEED) / 전체·역연산 필요(AES, ARIA)
DES 64 블록 · 56 키 · 16라운드 · 48비트 라운드키 · S-box 8개
AES 128 블록 · 10/12/14라운드 · SubBytes→ShiftRows→MixColumns→AddRoundKey, 마지막 MixColumns 없음
국산 SEED(Feistel) · ARIA(SPN) · HIGHT(64블록 경량) · LEA(ARX 경량)
모드 ECB 패턴 노출 · CBC IV/암호화 순차 · CFB 자기동기 · OFB 오류 전파 없음 · CTR 병렬·랜덤 접근
공격 COA < KPA(선형) < CPA(차분) < CCA

공개키 (Day 4)

항목 핵심
소인수분해 RSA, Rabin(4개 근, 증명된 안전성)
이산대수 DH, 엘가말(확률적·2배 길이), DSA(서명 전용), KCDSA
타원곡선 ECC 256 ≈ RSA 3072 ≈ AES-128
RSA n=pq, φ=(p−1)(q−1), ed≡1 mod φ, C=Mᵉ, M=Cᵈ, OAEP/PSS
하이브리드 데이터는 대칭키, 세션키는 수신자 공개키

해시·서명·PKI (Day 5)

항목 핵심
안전성 역상 2ⁿ · 제2역상 2ⁿ · 충돌 2^(n/2)
구조 MD(MD5·SHA-1·SHA-2, 길이 확장 취약) · 스펀지(SHA-3)
MAC 무결성+출처 인증, 부인방지 ✗ / HMAC ipad 0x36·opad 0x5C
패스워드 솔트(레인보우 방지) · 스트레칭(PBKDF2·bcrypt) · 메모리 하드(scrypt·Argon2)
서명 요건 위조불가·서명자인증·부인방지·변경불가·재사용불가
특수 서명 은닉(전자화폐) · 이중(SET) · 대리 · 그룹 · 다중
X.509 v3 일련번호·발급자·유효기간·주체·공개키·확장(BasicConstraints, KeyUsage, SAN, CRL DP, AIA)
폐지 CRL(주기 목록) · OCSP(실시간, good/revoked/unknown) · 스테이플링

신규 범위 (Day 6)

항목 핵심
블록체인 이전 블록 해시 · 머클 루트 · PoW(비트코인) · PoS(이더리움) · 51% 공격
양자 위협 쇼어 → 공개키 붕괴 · 그로버 → 대칭키 절반 · HNDL
NIST PQC FIPS 203 ML-KEM · 204 ML-DSA · 205 SLH-DSA
동형암호 PHE(RSA·엘가말 곱, Paillier 덧) · FHE(젠트리, CKKS)
경량암호 HIGHT · LEA · Ascon(NIST)
딥페이크 탐지 모델 · 라이브니스 · 워터마크 · C2PA · 재확인 절차

7-2. 미니 모의고사 (20문항)

M1. 접근통제 절차를 올바른 순서로 나열한 것은?
① 인증 → 식별 → 인가 ② 식별 → 인증 → 인가 ③ 인가 → 식별 → 인증 ④ 식별 → 인가 → 인증

M2. 벨-라파둘라 모델의 *-속성(Star Property)이 의미하는 것은?
① 자신보다 높은 등급의 객체를 읽을 수 없다
② 자신보다 낮은 등급의 객체에 쓸 수 없다
③ 자신보다 낮은 무결성 객체를 읽을 수 없다
④ 자신보다 높은 무결성 객체에 쓸 수 없다

M3. 경쟁 관계에 있는 기업의 정보에 동시에 접근하지 못하도록 하여 이해충돌을 방지하는 모델은?
① 클락-윌슨 ② 브루어-내쉬(만리장성) ③ 비바 ④ Take-Grant

M4. Kerberos의 구성 요소가 아닌 것은?
① AS ② TGS ③ TGT ④ OCSP 응답자

M5. 원격 접속 인증 프로토콜에 대한 설명으로 옳은 것은?
① RADIUS는 TCP 49번 포트를 사용한다
② TACACS+는 패킷 본문 전체를 암호화한다
③ RADIUS는 인증·인가·과금을 완전히 분리하여 처리한다
④ Diameter는 UDP만 사용하는 RADIUS의 경량 버전이다

M6. 공개키 분배 방식으로 분류되지 않는 것은?
① 공개 발표 ② 공개 디렉터리 ③ KDC와 마스터키를 공유하는 방식 ④ 공개키 인증서

M7. p = 13, g = 2인 디피-헬먼에서 A의 비밀값 4, B의 비밀값 5일 때 공유 비밀키는?
① 3 ② 6 ③ 9 ④ 12

M8. DES에 대한 설명으로 옳지 않은 것은?
① 블록 크기는 64비트이다
② 실제 키 길이는 56비트이다
③ 16라운드 SPN 구조이다
④ 각 라운드에 48비트 라운드키를 사용한다

M9. 동일한 평문 블록이 항상 동일한 암호문 블록으로 암호화되어 패턴이 노출되는 운영 모드는?
① ECB ② CBC ③ OFB ④ CTR

M10. 블록 암호의 출력을 다시 암호화 입력으로 되먹여 키스트림을 만들며, 전송 오류가 다른 비트로 전파되지 않는 모드는?
① CFB ② OFB ③ CBC ④ ECB

M11. 선형 암호 분석이 가정하는 공격 모델은?
① 암호문 단독 공격 ② 기지 평문 공격 ③ 선택 평문 공격 ④ 선택 암호문 공격

M12. RSA에서 p = 3, q = 11, e = 7일 때 개인키 d는?
① 3 ② 7 ③ 13 ④ 17

M13. 엘가말 암호에 대한 설명으로 옳지 않은 것은?
① 이산대수 문제에 기반한다
② 같은 평문은 항상 같은 암호문으로 암호화된다
③ 암호문 길이가 평문의 약 2배이다
④ 전자서명 방식으로도 사용할 수 있다

M14. 256비트 ECC와 비슷한 보안 강도를 갖는 RSA 키 길이는?
① 1024비트 ② 2048비트 ③ 3072비트 ④ 15360비트

M15. 출력이 256비트인 해시 함수에서 생일 공격으로 충돌을 찾는 데 필요한 대략적인 시도 횟수는?
① 2⁶⁴ ② 2¹²⁸ ③ 2²⁵⁵ ④ 2²⁵⁶

M16. 패스워드 저장 시 사용자마다 다른 솔트(Salt)를 추가하는 주된 목적은?
① 레인보우 테이블 등 사전 계산 공격을 무력화한다
② 솔트를 비밀로 유지해 패스워드를 암호화한다
③ 해시 출력 길이를 늘려 생일 공격을 막는다
④ 해시 계산을 의도적으로 느리게 만든다

M17. 전자서명이 기본적으로 만족해야 하는 요건이 아닌 것은?
① 위조 불가 ② 부인 방지 ③ 기밀성 ④ 재사용 불가

M18. 서명자가 메시지 내용을 알지 못한 채 서명하게 하여 사용자의 익명성을 보장하는 서명과 그 대표 응용은?
① 이중 서명 – SET ② 은닉 서명 – 전자화폐 ③ 그룹 서명 – 공동 결재 ④ 대리 서명 – 전자투표

M19. OCSP 응답 상태로 정의되지 않은 것은?
① good ② revoked ③ unknown ④ expired

M20. 다음 연결 중 옳지 않은 것은?
① Ascon – NIST 경량암호 표준
② CKKS – 근사 연산을 지원하는 동형암호
③ SLH-DSA – 해시 기반 전자서명
④ 지분증명(PoS) – 해시 퍼즐을 먼저 푸는 연산 경쟁

채점: 18개 이상 = 이번 주 목표 달성 / 14~17개 = 틀린 Day의 ⚠️ 함정만 다시 / 13개 이하 = 해당 Day 개념 재독 후 확인 문제 재풀이

카드

오답 노트


네비게이션

이전 다음
◀ Week04_웹 기초와 보안관리 입문 Week06_정보보안 관리 및 법규 ▶